2011-01-14 7 views
0

Ich bin ein Python-Programmierer und VB.NET-Neuling, der eine Anwendung von Python in VB.NET (3.5) konvertiert.Auswählen einer Datenstruktur in VB.NET und Durchführen eines Vergleichs

In Python Ich habe eine Funktion, die eine Liste von Tupeln zurückgibt, die ich auf zwei Datensätze mit Ergebnissen wie folgt ausführen:

data1 = [(1,"a",2),(5,"c",7)...] 
data2 = [(1,"a",2),(5,"x",7)...] 

Dann, wenn die beiden Datensätze identisch sind zu überprüfen, was ich will. In Python prüfe ich für die Gleichstellung wie folgt aus:

"Equal" if data1 == data2 else "Not Equal" 

Ich möchte die einfachste Weg, wissen, um die Daten in VB.NET zu strukturieren.

Es scheint, als ob die richtige Datenstruktur für jeden Datensatz in VB.NET eine List (of Something) ist.

Sollte ich eine Klasse für jedes Datenelement erstellen, oder gibt es einen einfacheren Weg? Wenn ich das tue, brauche ich einen benutzerdefinierten Weg, um zu entscheiden, ob zwei Instanzen die gleichen Daten enthalten?

Was ist der einfachste Weg, um die beiden Datensätze für Gleichheit zu vergleichen?

Antwort

1

Sie können den generischen Typ Tuple(Of T1, T2, T3) verwenden oder eine eigene Klasse erstellen.
In beiden Fällen müssen Sie einen IEqualityComparer(Of T) für die Klasse erstellen; Sie können dann prüfen, ob set1.SequenceEqual(set2, New MyComparer()).

Wenn Sie Ihre eigene Klasse erstellen, können Sie Equals() und GetHashCode() außer Kraft setzen, anstatt eine IEqualityComparer zu erstellen.

+0

Danke. Ich habe das nachgeschlagen und Tuple ist anscheinend neu in .NET 4.0. Ich habe aktualisiert, um anzugeben, dass ich .NET 3.5 verwende. – user483263

+0

Dann müssen Sie Ihre eigene Klasse erstellen. Wenn die Elemente vollständig in einer Funktion enthalten sind, können Sie auch einen anonymen Typ verwenden. (In diesem Fall brauchen Sie keinen 'IEqualityComparer', da anonyme Typen' Equals' und 'GetHashCode' implementieren. – SLaks

Verwandte Themen