Finden Sie Duplikate in einer Liste in C#

Saad Aslam 12 Oktober 2023
  1. Verwenden Sie Enumerable.GroupBy(), um Duplikate in einer Liste in C# zu finden
  2. Verwenden Sie HashSet, um Duplikate in einer Liste in C# zu finden
Finden Sie Duplikate in einer Liste in C#

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
Autor: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

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

Verwandter Artikel - Csharp List