2012-03-16 5 views
2

여러 필드 일치를 소개하는 방법을 알아 내려고합니다. 지금은 일치하는 UserId를 기반으로 회사 테이블에 가입하고 있습니다. 그러나 만약에 AND가 거기에 있고 싶다면 c.SomeField = somevalue 같은 것일까?다중 필드 람다 (Lambda) 표현을 통한 결합

var companyUsers = users.Where(u => u.IsEmployee) 
         .Join(companies.Where(c => c.SomeField == someValue), 
           u => u.UserId, c => c.UserId, (u, c) => u.UserId) 
         .ToList(); 

경우 : somevalue는 다음 방금 처음 companies를 필터링한다 (즉, 사용자와 관련이없는) 상수

as.Join(bs, a => new { a.X, a.Y }, b => new { b.X, b.Y }) 
+0

코드를 읽을 때 옆으로 스크롤하지 않아도 코드를 읽는 것이 훨씬 쉽습니다 ... LINQ 쿼리는 일반적으로 수직으로 스택하면 매우 잘 작동합니다 - 예제에 대한 대답은 ... –

답변

3

당신은 익명 형식에 가입해야 사용자의 두 필드를 회사의 두 필드에 조인 할 필요가있는 경우 SLaks에 표시된 것처럼 익명 유형을 사용하십시오.

+0

입니다. 일?? –

+0

그것은 작동합니까 ?? 나는 그것을 시도했지만, 할 수 없었다 –

+0

@ JohnNguyen : 왜 안되니? 어떻게 된 거예요? – SLaks

3

경우

var companyUsers = users.Where(u => u.IsEmployee) 
         .Join(companies, 
           u => u.UserId, c => c.UserId, 
           (u, c) => u.UserId) 
         .ToList(); 
+0

감사합니다. LINQ가 때때로 그렇게 쉽게 찾아 내지 못합니다. 아직도 유창하게하려고 노력하고있어. – PositiveGuy