List entfernen
Mehrere Methoden wiederholter Elemente
Eine der einfachsten und einfachen Lesen von Lösungen ist die Verwendung von LINQ (Sprachintegration). Diese Funktion wird in .NET 3 eingeführt und bietet eine Anweisungsmethode zur Abfrage und Übermittlung von Daten. Das Folgende ist ein Beispiel für Linq:
Filtern Sie die sich wiederholenden Elemente in der Liste
und geben Sie eine neue Liste<code class="language-csharp">List<T> withDupes = LoadSomeData(); List<T> noDupes = withDupes.Distinct().ToList();</code>
Methoden transformieren die erzeugte Distinct()
in withDupes
. noDupes
ToList()
Wenn Sie bereits LINQ -Ausdrücke verwenden, ist diese Methode sehr bequem. IEnumerable
List
verwenden
Eine andere Wahl ist die Verwendung von Hashset, ein Sammelart, der für schnelle Suche und effiziente wiederholte Erkennung ausgelegt ist. Folgendes ist die Methode, die Sie diesen Vorgang ausführen können:ursprünglich leer. Wir haben jedes Projekt in durchquert und versucht, es der Sammlung hinzuzufügen. Da Hashset nicht wiederholt wird, kann nur das einzige Projekt erfolgreich hinzugefügt werden. Schließlich verwendet die generierte Sammlung , um wieder auf die Liste zurückzukehren.
Diese Methode liefert die Leistung von O (N) für Einfügen und Suchvorgänge.
<code class="language-csharp">HashSet<T> hashSet = new HashSet<T>(); foreach (var item in withDupes) { hashSet.Add(item); } List<T> noDupes = new List<T>(hashSet);</code>
HashSet hashSet
withDupes
Die dritte Methode beinhaltet die Verwendung von Wörterbuch, um das eindeutige Element zu verfolgen: noDupes
Temporärer Speicher für das eindeutige Element. Wir haben die Liste durchquert, um zu überprüfen, ob jedes Element im Wörterbuch vorhanden ist. Wenn nicht, fügen wir es der Liste der Wörterbuch und
hinzu.Diese Methode liefert auch O (N) -Komplexität, muss jedoch zusätzliche Datenstrukturen für die einzigartige Verfolgung erstellen.
Wählen Sie die richtige Methode
<code class="language-csharp">Dictionary<T, bool> dict = new Dictionary<T, bool>(); List<T> noDupes = new List<T>(); foreach (var item in withDupes) { if (!dict.ContainsKey(item)) { dict.Add(item, true); noDupes.Add(item); } }</code>
Das obige ist der detaillierte Inhalt vonWie kann ich Duplikate effizient aus einer C# -Liste entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!