Pourquoi grouper par clé des objets anonymes ne se comporte pas comme prévu?
-
06-07-2019 - |
Question
J'ai un fichier csv de cette forme
A,B,value
a1,b1,10
a2,b1,12
a2,b1,15
a2,b2,14
a1,b1,12
que je convertis comme pouvant être daté dans mon application.
Dim enumerable = _dt.AsEnumerable
Dim groupedResults = enumerable.GroupBy( _
Function(x) _
New With { _
.A = x.Item("A").ToString, _
.B = x.Item("B").ToString _
} _
)
Je m'attendais à ce que groupedResults compte à 4 au lieu des 5 qui s'affichent.
Fondamentalement, il ne regroupe pas les 1er et 5ème rangs en un seul groupe.
Je m'attendais à ce qu'un objet avec la même valeur produise la même clé.
Quelle peut en être la raison?
La solution
Rendre les propriétés de type anonyme immuables - c’est le moyen d’obtenir l’égalité et le hachage. (En C #, tous les types anonymes sont immuables par défaut.)
Essayez ceci
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: la partie Key
signifie que la propriété est une clé pour le type anonyme. Consultez la page MSDN de types anonymes VB
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow