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?

Foi útil?

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
scroll top