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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top