2010-01-18 3 views
0

그룹화를 사용하는 데 문제가있는 LINQ-newb입니다. dosesWithHighestScore라는 IEnumerable을 쿼리하려고합니다.LINQ 쿼리에서 그룹 메서드가 인식되지 않습니다.

나는이 다음 예제 해요 :

var doseWithLowestVolumeForForm = 
     from d in dosesWithHighestScore 
     group d by d.formulation.form into g     
     select new { 
      Form = g.Key, 
      LowDose = g.Group.Min(d => d.doseAdministrableAmount) 
     }; 

이 오류의 원인이되는 "그룹"의 사용 :

'System.Linq.IGrouping'여기 http://msdn.microsoft.com/en-us/vcsharp/aa336747.aspx#minGrouped

은 내 코드입니다 'Group'에 대한 정의가없고 'System.Linq.IGrouping'유형의 첫 번째 인수를 허용하는 'Group'확장 메서드가 없습니다 (지시문이나 어셈블리 참조가 누락 되었습니까?)

다음은 내 using이는 :

using System; 
using System.Text; 
using System.Linq; 
using System.Xml.Linq; 
using System.Collections.Generic; 
using System.Collections; 

왜이 오류는 무엇입니까?

답변

3

과제에서 Group 용어를 제거하면 LowDose이됩니다. LINQ- 개체에서 그룹 자체는 IEnumerable<>이므로 추가 한정자 없이도 다른 LINQ 작업을 적용 할 수 있습니다. Key 속성은 IGrouping에 제공되어 그룹이 잘 그룹화 된 값에 액세스 할 수 있습니다.

var doseWithLowestVolumeForForm = 
     from d in dosesWithHighestScore 
     group d by d.formulation.form into g     
     select new { 
      Form = g.Key, 
      LowDose = g.Min(d => d.doseAdministrableAmount) 
     }; 

Group 속성을 사용하는 사이트의 예는 잘못되었습니다.

+0

컴파일 - 감사합니다! 그래서 한 가지 더 추가 질문 : 어떻게 결과에 액세스합니까? 나는 dosesWithLowestVolumeForForm [0] .Form과 같은 것을 할 수있을 것이라고 생각했으나 작동하지 않습니다. – Marvin

+0

LINQ 문의 결과가 배열이 아닌 쿼리 개체입니다. 검색 결과에 액세스하는 방법에는 여러 가지가 있습니다. 일반적인 방법은'foreach' 루프를 사용하여 각 결과를 평가하는 것입니다. 'foreach (varWithLowestVolumeForForm의 항목) {...}'와 같이. 또는 첫 번째 결과에만 관심이있는 경우 다음과 같이 할 수 있습니다. 'doseWithLowestVolumeForForm.First()': 쿼리의 첫 번째 결과를 반환합니다. 다른 대안들도 존재하지만 ... 다시 말하면, 당신이 결과로 무엇을해야하는지에 달려 있습니다. – LBushkin