Vergleich zweier Listen mit benutzerspezifischen Datentypen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Trade.

    Vergleich zweier Listen mit benutzerspezifischen Datentypen

    Moin!

    Ich habe zwei zwei Listen, die jeweils mit einem eigens erstellten Datentyp gefüttert sind.

    VB.NET-Quellcode

    1. Dim listA as List(Of SchweissPunkt) = FunktionZumFuellenA
    2. Dim listB As List(Of Schweisspunkt) = FunktionZumFuellenB

    "Schweißpunkt" ist ein Datentyp (Klasse), der unter anderen den Name und die Koordinaten X,Y,Z enthält, aber auch weitere nicht relevante Informationen.

    VB.NET-Quellcode

    1. 'Auszug aus Schweißpunkt
    2. Public Sub New()
    3. A = 0
    4. B = 0
    5. C = 0
    6. X = 0
    7. Y = 0
    8. Z = 0
    9. Name = ""
    10. FzTyp = 0
    11. SPindex = 0
    12. ProgNr = 0
    13. P = 0
    14. RName = ""
    15. End Sub

    Ich möchte mir nun die Schweißpunkte ausgeben lassen, welche nach Name in Liste A auftauchen, aber nicht in B. Und ich möchte die Schweißpunkte ausgeben, deren Name in A und B vorhanden ist, aber bei denen eine oder mehrere der Eigenschaften (X,Y,Z) nicht passen (also unterschiedlich sind).

    Nun hatte ich bisher mehrere Ansätze, die ich entweder nicht fertig bekommen habe, oder die nicht gefruchtet sind. So könnte ich der klasse Schweißpunkte eine Funktion "equals" hinzufügen... habe ich aber nicht hinbekommen...

    Habt ihr einen Tipp für mich? Ich scheitere gerade an der Komplexität...
    Schau Dir mal die Extensions/Funktionen an, die LINQ und die Enumerable-Klasse anbieten.
    Das wäre z. B. schon mal etwas: msdn.microsoft.com/de-de/library/bb300779(v=vs.110).aspx
    Ansonsten kannst Du Dir da auch Where anschauen, um Bedigungen zu formulieren. Um dann spezielle Vergleiche für Deine Klasse anzustellen, musst Du halt Equals eigens implementieren und/oder die Vergleichsoperatoren überladen.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: