Entwickler-Ecke
Basistechnologien - [C#] Inhalte einer List<> vergleichen
Nordlicht321 - Do 29.01.15 10:11
Titel: [C#] Inhalte einer List<> vergleichen
Hallo,
ich habe das folgende Problem. Ich habe in eine List<Koordinaten> die folgenden 6 Variablen aus einer XML-Datei eingelesen: Startkoordinate-X, Startkoordinate-Y, Startkoordinate-Z, Endkoordinate-X, Endkooridnate-Y und Endkoordinate-Z.
Nun möchte ich mit einer Schleife diese List durchlaufen um gleiche Punkte(gleiche Koordinatenwerte) zu finden und auszugeben. Kann mir jemand ein Besipiel geben, wie ich am besten vorgehe?
Vielen Dank für Eure Hilfe.
Blup - Do 29.01.15 10:23
Die Liste nach den Koordinaten sortieren, gleiche Koordinaten folgen dann aufeinander.
Jetzt muss man die Liste nur einmal durchsehen und prüfen, ob der Vorgänger oder Nachfolger identische Koordinaten hat.
Stundenplan - Do 29.01.15 10:44
Ginge das nicht auch mit list.Distinct (Sofern Koordinaten ein struct ist)?
Ralf Jansen - Do 29.01.15 11:12
Distinct würde dir die eindeutigen ohne Duplikate liefern. Daraus weißt du dann immer noch nicht welche doppelt sind.
Man müßte schon gruppieren und schauen welches Elemente es mehr als 1mal gibt.
Unter der Annahme das die Koordinaten Klasse (vermutlich ungünstig die Klasse im Plural zu bezeichnen es ist bestimmt nur 1 Koordinate) einfach die 3 Properties X,Y,Z hat etwa
C#-Quelltext
1:
| var duplicates = meineLiebeListeMitKoordinaten.GroupBy(k => new { k.X, k.Y, k.Z }).SelectMany(x => x.Skip(1)); |
Ralf Jansen - Do 29.01.15 14:17
@Th69: Übersehe ich was oder bräuchtest du so nicht immer noch die Schleife über die Liste um dann per Linq zu prüfen ob das aktuelle Element vorhanden ist (die benannten Linq Methoden liefern dir ja immer max. 1 Treffer und nicht die Liste aller Treffer). Wenn dem so ist müßtest du noch verhindern sich selbst zu finden.
Th69 - Do 29.01.15 17:19
Ich würde natürlich schon beim Einlesen schauen, ob die Werte in der Liste sind (bevor ich sie hinzufüge).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!