2011-04-07 7 views
1

기본적으로 Lambda EF에 작성하겠습니다.EF에서 childby orderby 주문 방법

select c.* from company c 
left join companyfeature cf 
on c.companyID = cf.companyID 
AND cf.FeatureID = 1 
order by FeatureID desc, c.Name 

나는 그것을 알아낼 수 없습니다. 나는 그것을 알아낼 수 있다고, 내가 시도하지 않았다 결코 : EF에서
그들은 & CompanyFeatures 엔티티 클로스

회사에게 있습니다. 그러나 나는 당신에게 어떤 무료 로더가 아니라는 것을 증명하기 위해; 여기에 내 linq 성명입니다. 실제로 작동

Companies 
.OrderByDescending(c => c.CompanyFeatures.Any(f => f.FeatureID == 1)) 
.ThenBy(c => c.Name) 

을 (그래, 난 자리에 내 FK이)하지만 위의 내 SQL 문에 대해 MS 대 6 초 취하는 불경건 한 SQL 문을 생성합니다. 그래서 나는 그것을 잘못 썼다고 가정합니다. 나는 거기보다 많은 똑똑한 사람들이 내 것이기 때문에 나는 누군가가 그들의 지식을 기꺼이 나누기를 바랄 것이라고 기대하고 있습니다. 미리 감사드립니다.

+0

할 이유 조인, 당신은 당신의 테이블 레이아웃에 적절한 외부 키를 가지고있는 경우. 그리고 시도해 보지 않고도 사람들에게 당신을 위해 전체 솔루션을 작성하도록 요청하지 말고 문제를 해결할 수 있도록 작성하고 시도를 게시하십시오. –

+0

LINQ에서 왼쪽 외부 조인 만 공식화하면됩니다. 이것을 시도하십시오 : http://msdn.microsoft.com/en-us/library/bb397895.aspx –

+0

이미 FeatureID를 하나의 값으로 제한하는 경우 FeatureID에 의한 정렬은 무엇입니까? – JamieSee

답변

0

(.이 C#을하지만 VB는 매우 유사합니다)이 시도 :

var result = 
    from Company in Companies 
    from CompanyFeature in Company.CompanyFeatures.Where(cf => cf.FeatureID == 1).DefaultIfEmpty() 
    orderby Company.Name 
    select { Company, CompanyFeature };