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?

Était-ce utile?

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