2013-05-14 3 views
1

카운트가있는 LINQ 쿼리를 올바르게 그룹화하는 데 문제가 있습니다.카운트 문제가있는 LINQ 그룹화

PCECCC

ABC XXX 미국

ABC XXX CA

ABC XXX UK : 예를 들어 나는 다음과 같은 데이터를 데이터 테이블을 조회하기 위해 노력하고있어

DEF YYY US

DEF YYY CA

DEF YYY 영국

DEF ZZZ 미국

DEF ZZZ CA

DEF ZZZ 영국

HIJ AAA 미국

HIJ AAA CA

HIJ AAA 영국

CC의 값을 제거하고 PC의 각 값에 대해 서로 다른 EC 값의 수를 표시하려면 count 함수를 사용하고 싶습니다. 즉 위의 데이터 세트에 대한 결과는 다음과 같아야합니다

PC가 DEF 2

이 HIJ 1

나는 여러 가지 시도했습니다 EC

ABC 1

카운트 이 결과에 도달하는 여러 가지 방법이 있지만 나는 계속 벽에 부딪친 다. 마지막 시도는 다음과 같습니다.

Dim test = From r In (_ 
         From s In Base _ 
         Group By s.Base_PC, _ 
           s.Base_EC _ 
         Into g = Group) _ 
         Group r By key = New With {r.Base_PC} _ 
         Into Group _ 
         Select key.Base_PC, Group.Count 

내가 잘못 가고있는 아이디어가 있습니까? 감사! 여기

답변

2

는 쿼리 구문에 대한 너무 많은이기 때문에 방법 구문 :

Dim counts = base.AsEnumerable(). 
    GroupBy(Function(r) r.Field(Of String)("PC")). 
    Select(Function(g) New With { 
       .PC = g.Key, 
       .CountEC = g.Select(Function(r) r.Field(Of String)("EC")). 
          Distinct(). 
          Count() 
      }) 

For Each x In counts 
    Console.WriteLine("PC={0} Count of distinct EC's={1}", x.PC, x.CountEC) 
Next 

먼저 당신이 "PC"열을 기준으로 그룹에 필요, 당신은 별개의 그룹의 키와 카운트 익명의 유형을 선택 "EC"열의 값.

+0

감사합니다. Tim! – StephenT