2013-09-03 3 views
1

어떻게이 linq 표현식의 선택 부분을 람다로 변환하겠습니까?람다 식으로 변환

var query2 = from method in typeof(double).GetMethods() // integrated method c# reflection 
      orderby method.Name 
      group method by method.Name into groups 
      select new { MethodName = groups.Key, NumberOfOverloads = groups.Count()}; 

지금까지 나는이 있습니다

var methods = typeof(double).GetMethods(); 
var query3 = methods.OrderBy(x => x.Name).GroupBy(y => y.Name); 

나는 선택이 시도를하지만 난 compilor 오류를 얻을.

var query3 = methods.OrderBy(x => x.Name).GroupBy(y => y.Name) 
.Select<new { MethodName = groups.Key, NumberOfOverloads = groups.Count()}>(); 

도움을 주셔서 감사합니다.

+1

쿼리 이해를 유창한 구문으로 변환하는 정확한 규칙은 C# 사양에서 찾을 수 있습니다. –

답변

7

정확한 번역입니다. 난 당신이

var methods = typeof(double).GetMethods() 
.GroupBy(x=>x.Name) 
.Select(x=> new { MethodName = x.Key, NumberOfOverloads = x.Count()}); 

에 의해 얻어지는 Select

var methods = typeof(double).GetMethods() 
    .OrderBy(x=>x.Name) 
    .GroupBy(x=>x.Name) 
    .Select(x=> new { MethodName = x.Key, NumberOfOverloads = x.Count()}); 

같은 결과에 요소를 사용하지 않는 당신은 당신이 돈 때문에 약간의 계산 시간을 절약 고려, 당신은 OrderBy 상점 필요한 이유를 모르겠어요 컬렉션을 주문해야합니다.

+0

감사합니다, ive linq 연산자를 이해하려고했습니다. 온라인 리소스에 대해 잘 알고 있습니까? –

+0

제게 큰 영향을 준 Jon Skeet의 책 C# in Depth,하지만 당신은 그것을 사야 할 것입니다. 그의 블로그 (http://msmvps.com/blogs/jon_skeet/)에 약간의 자료를 넣을 수는 있지만 LINQ "초보자"에게는 너무 쉽지 않을 것이라고 생각합니다. – Save