Por grupo pela chave de objetos anônimos não se comporta da maneira esperada?
-
06-07-2019 - |
Pergunta
Eu tenho um arquivo CSV deste FORMART
A,B,value
a1,b1,10
a2,b1,12
a2,b1,15
a2,b2,14
a1,b1,12
que eu estou convertendo como tabela de dados em meu aplicativo.
Dim enumerable = _dt.AsEnumerable
Dim groupedResults = enumerable.GroupBy( _
Function(x) _
New With { _
.A = x.Item("A").ToString, _
.B = x.Item("B").ToString _
} _
)
Eu esperava os groupedResults contar a 4 em vez do 5 que shows.
Basicamente ele faz não agrupar pela 1ª e 5ª linha em um grupo.
Eu esperava objeto com o mesmo valor será produzir mesma chave.
O que pode ser a razão para isso?
Solução
Faça as propriedades tipo anônimo imutáveis ??- que é a maneira de obter igualdade e hashing ao trabalho. (Em C # todos os tipos anônimos são imutáveis ??por padrão).
Tente este
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: Os meios de peça Key
que a propriedade é uma chave para o tipo anônimo. Veja a tipos VB anônimos MSDN página para mais detalhes.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow