2009-10-28 3 views
2

이 linq 식을 linq 문법으로 바꾸는 데 도움이 필요합니다. SampleData.Publishers 및 SampleData.Books는 Linq in Action 책의 간단한 컬렉션입니다.이 LINQ 식을 LINQ 문으로 바꾸는 데 도움이 필요합니다.

여기 여기

var pubBooks = 
      from pub in SampleData.Publishers 
      join book in SampleData.Books on pub.Name equals book.Publisher.Name into pubbks 
      select new { 
       Publisher = pub.Name, 
       Books = 
        from b in pubbks 
        select b.Title 
      }; 

내가 지금까지 무엇을 가지고 표현을하지만, 나는 익명의 유형에 정의 된 책 수집을 얻을 수없는 것. 시간 내 줘서 고마워.

var pubBooks = SampleData.Publishers.Join(SampleData.Books, pub => pub.Name, book => book.Publisher.Name, (pub, book) => new { 
      Publisher=pub.Name, 
      Books=?????? 
     }); 

답변

0

Resharper

나에게이 준 성명 변환 위젯에 대한 LINQ 표현식 ...
+0

내가 누군가가 온라인을 작성해야이 :-)에 대한 더 신용을하지 :

var pubBooks = SampleData.Publishers.GroupJoin(SampleData.Books, pub => pub.Name, book => book.Publisher.Name, (pub, bookColl) => new { Publisher = pub.Name, Books = bookColl.Select(b => b.Title) }); 
rohancragg

+0

ps 나는 분명히 그것을 테스트하지 않았다. – rohancragg

3

정말 쉬운 방법은 Reflector을 사용하는 것입니다. 코드를 분석 할 때 표현식이 아닌 명령문을 볼 수 있습니다.

3

변형하는 또 다른 좋은 방법은 LinqPad을 사용하는 것입니다.

2

GroupJoin을 사용할 수 있습니다.

나는 이것을 테스트하지 않았지만 그것은 다음과 같이 수 :

var pubBooks = 
      SampleData.Publishers.GroupJoin(
       SampleData.Books, 
       pub => pub.Name, 
       book => book.Publisher.Name, 
       (pub, pubbks) => new 
            { 
             Publisher = pub.Name, 
             Books = 
            from b in pubbks 
            select b.Title 
            }); 
관련 문제