Warum Gruppe von Schlüssel von anonymen Objekten verhält sich nicht so, wie erwartet?
-
06-07-2019 - |
Frage
Ich habe eine CSV-Datei dieses formart
A,B,value
a1,b1,10
a2,b1,12
a2,b1,15
a2,b2,14
a1,b1,12
, die ich als Datentabelle in meiner Anwendung bin zu konvertieren.
Dim enumerable = _dt.AsEnumerable
Dim groupedResults = enumerable.GroupBy( _
Function(x) _
New With { _
.A = x.Item("A").ToString, _
.B = x.Item("B").ToString _
} _
)
Ich erwartete die groupedResults bis 4 zählen anstelle der 5, die zeigt.
Grundsätzlich spielt es keine Gruppe von 1. und 5. Zeile in einer Gruppe.
Ich erwartete Objekt mit dem gleichen Wert gleiche Schlüssel werden produzieren.
Was kann der Grund dafür sein?
Lösung
Machen Sie die anonyme Typen Eigenschaften unveränderlich - das ist die Art und Weise Gleichheit zu erhalten und arbeiten Hashing. (In C # alle anonymen Typen sind unveränderlich standardmäßig aktiviert.)
Versuchen Sie, diese
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: Die Key
Teil bedeutet, dass Eigentum ein Schlüssel für den anonymen Typ ist. Sehen Sie sich die VB anonyme Typen MSDN-Seite für weitere Details.