Почему группировка по ключу анонимных объектов не ведет себя ожидаемым образом? - PullRequest
0 голосов
/ 09 марта 2009

У меня есть CSV-файл этого формата

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

, которое я конвертирую в приложение в виде данных.

 Dim enumerable = _dt.AsEnumerable

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

Я ожидал, что groupedResults будет иметь значение 4 вместо 5, которое показывает.
В основном он не группируется по 1-му и 5-му ряду в одну группу.

Я ожидал, что объект с тем же значением будет производить тот же ключ.

В чем может быть причина этого?

1 Ответ

4 голосов
/ 09 марта 2009

Сделайте свойства анонимного типа неизменяемыми - это способ добиться равенства и хэширования. (В 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 _
                             } _
                    )

EDIT: часть Key означает, что свойство является ключом для анонимного типа. Для получения дополнительной информации см. Страницу MSDN VB для анонимных типов .

...