2009-03-09 2 views
0

나는 내 응용 프로그램에서 데이터 테이블로 변환하고이 formart익명 개체의 키 별 그룹이 예상대로 작동하지 않는 이유는 무엇입니까?

A,B,value 
a1,b1,10 
a2,b1,12 
a2,b1,15 
a2,b2,14 
a1,b1,12 

의 CSV 파일이 있습니다.

Dim enumerable = _dt.AsEnumerable 

Dim groupedResults = enumerable.GroupBy(_ 
            Function(x) _ 
             New With { _ 
                .A = x.Item("A").ToString, _ 
                .B = x.Item("B").ToString _ 
               } _ 
             ) 

groupedResults는 5가 아닌 4로 계산됩니다.
기본적으로 1 번째 및 5 번째 행을 하나의 그룹으로 그룹화하지 않습니다.

같은 값을 가진 개체는 동일한 키를 생성합니다.

왜 그럴 수 있습니까?

답변

4

익명 형식 속성을 변경 불가능하게 만듭니다. 이것이 평등과 해시 작동 방식입니다. (C#에서 모든 익명 형식은 기본적으로 변경할 수 있습니다.)

Dim enumerable = _dt.AsEnumerable 

Dim groupedResults = enumerable.GroupBy(_ 
       Function(x) _ 
        New With { _ 
           Key .A = x.Item("A").ToString, _ 
           Key .B = x.Item("B").ToString _ 
          } _ 
        ) 

편집을 시도해보십시오 Key 부분은 속성이 익명 형식의 핵심임을 의미한다. 자세한 내용은 VB anonymous types MSDN page을 참조하십시오.

+0

그래, 그들이 다른 해시 코드를 확인하십시오. – Biswanath

+0

키는 무엇을 의미합니까? – Biswanath

+0

예, 작동합니다. – Biswanath