Почему группировка по ключу анонимных объектов не ведет себя ожидаемым образом?
-
06-07-2019 - |
Вопрос
У меня есть 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-му ряду в одну группу. Р>
Я ожидал, что объект с тем же значением будет производить тот же ключ. Р>
Что может быть причиной этого? Р>
Решение
Сделайте свойства анонимного типа неизменяемыми - это способ добиться равенства и хэширования. (В 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
означает, что свойство является ключом для анонимного типа. См. страницу MSDN анонимных типов VB для получения дополнительной информации.
Не связан с StackOverflow