Finden Sie Duplikate in einer Liste in C#
-
Verwenden Sie
Enumerable.GroupBy()
, um Duplikate in einer Liste inC#
zu finden -
Verwenden Sie HashSet, um Duplikate in einer Liste in
C#
zu finden
Durch die Lektüre dieses Artikels erhalten wir ein besseres Verständnis der Schritte, die unternommen werden müssen, um doppelte Einträge in einer Liste mit der Programmiersprache C# zu finden.
Die folgenden zwei Ansätze können verwendet werden, um diese Aufgabe auszuführen:
Enumerable.GroupBy()
HashSet
Verwenden Sie Enumerable.GroupBy()
, um Duplikate in einer Liste in C#
zu finden
Wir können die Funktion Enumerable.GroupBy()
verwenden, um die Elemente nach dem Wert jedes Elements zu gruppieren. Dann entfernt ein Filter die Gruppen, die nur einmal vorhanden sind, und lässt die verbleibenden Gruppen mit doppelten Schlüsseln zurück.
Zunächst müssen wir die wesentlichen Bibliotheken für die Funktionen importieren, die in der Implementierung verwendet werden sollen.
using System;
using System.Collections.Generic;
using System.Linq;
Wir werden eine neue Liste vom Typ String erstellen und ihr den Namen dataList.
geben. Wir werden einige Elemente zu der Liste hinzufügen, die wir gerade innerhalb der Funktion Main()
erstellt haben.
List<string> dataList = new List<string>() { "Saad", "John", "Miller", "Saad", "Stacey" };
Jetzt müssen wir eine Variable checkDuplicates
vom Typ IEnumerable<string>
initialisieren, die die Funktionen .GroupBy()
, .Where()
und .Select()
verwendet. Dieser Prozess sucht nach Duplikaten in der dataList
.
Falls vorhanden, werden diese in der Variablen checkDuplicates
gespeichert.
IEnumerable<string> checkDuplicates =
dataList.GroupBy(x => x).Where(g => g.Count() > 1).Select(x => x.Key);
Anhand der Bedingung ermitteln wir, ob Duplikate in den checkDuplicates
gespeichert sind oder nicht.
Ist diese Bedingung nicht erfüllt, wird in der Konsole anstelle des Ausschreibens der Elemente die Meldung Keine doppelten Elemente in der Liste
angezeigt. Ist die Bedingung hingegen erfüllt, werden doppelte Artikel angezeigt.
if (checkDuplicates.Count() > 0) {
Console.WriteLine("The duplicate elements in the list are: " +
String.Join(", ", checkDuplicates));
} else {
Console.WriteLine("No duplicate elements in the list");
}
Vollständiger Quellcode:
using System;
using System.Collections.Generic;
using System.Linq;
public class DuplicatesBySaad {
public static void Main() {
List<string> dataList = new List<string>() { "Saad", "John", "Miller", "Saad", "Stacey" };
IEnumerable<string> checkDuplicates =
dataList.GroupBy(x => x).Where(g => g.Count() > 1).Select(x => x.Key);
if (checkDuplicates.Count() > 0) {
Console.WriteLine("The duplicate elements in the list are: " +
String.Join(", ", checkDuplicates));
} else {
Console.WriteLine("No duplicate elements in the list");
}
}
}
Ausgang:
The duplicate elements in the list are: Saad
Verwenden Sie HashSet, um Duplikate in einer Liste in C#
zu finden
In den meisten Fällen machen wir davon Gebrauch, wenn wir verhindern möchten, dass die Sammlung mit Stücken gefüllt wird, die Duplikate anderer sind. Verglichen mit der Leistung der Liste hat das HashSet eine wesentlich bessere Gesamtleistung.
Erstellen Sie eine Liste dataList
vom Typ String, um String-Daten darin zu speichern.
List<string> dataList = new List<string>() { "Saad", "John", "Miller", "Saad", "Stacey" };
Danach müssen wir ein HashSet mit dem Namen hashSet
vom Typ String erstellen und dann initialisieren, bevor wir die Daten aus der Liste speichern können.
Außerdem müssen Sie eine IEnumerable
-Variable vom Typ String erstellen und ihr den Namen duplicateElements
geben. Diese Variable sollte die dataList
überprüfen und, wenn sie Duplikate findet, sie hinzufügen und speichern.
Und zuletzt werden wir die doppelten Elemente auf der Konsole ausgeben.
HashSet<string> hashSet = new HashSet<string>();
IEnumerable<string> duplicateElements = dataList.Where(e => !hashset.Add(e));
Console.WriteLine("The duplicate elements in the list are: " +
String.Join(", ", duplicateElements));
Vollständiger Quellcode:
using System;
using System.Collections.Generic;
using System.Linq;
public class DuplicatesBySaad {
public static void Main() {
List<string> dataList = new List<string>() { "Saad", "John", "Miller", "Saad", "Stacey" };
HashSet<string> hashSet = new HashSet<string>();
IEnumerable<string> duplicateElements = dataList.Where(e => !hashSet.Add(e));
Console.WriteLine("The duplicate elements in the list are: " +
String.Join(", ", duplicateElements));
}
}
Ausgang:
The duplicate elements in the list are: Saad
I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.
LinkedIn