익명의 개체의 키에 의한 그룹 그룹이 예상되는 방식으로 행동하지 않는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/626935

문제

이 공평한 CSV 파일이 있습니다

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

내 응용 프로그램에서 DataTable로 변환하고 있습니다.

 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 번의 행을 하나의 그룹으로 그룹화하지 않습니다.

동일한 값을 가진 객체가 동일한 키를 생성 할 것으로 예상했습니다.

그 이유는 무엇입니까?

도움이 되었습니까?

해결책

익명 유형 속성을 불변으로 만드십시오. 평등과 해싱이 작동하는 방법입니다. (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 익명 유형 MSDN 페이지 자세한 사항은.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top