/ / Wie finde ich heraus, ob Duplikate in einer Liste versus einer anderen Liste hast? - c #, Liste, Duplikate

Wie finde ich heraus, ob Dubletten in einer Liste vorhanden sind? - c #, Liste, Duplikate

Ich habe eine Liste, in der MyClass eine Eigenschaft "Name" hat. Ich möchte wissen, ob MyClass mit demselben Namen in der Liste doppelt vorhanden ist.

Ich habe auch eine andere Liste und möchte wissen, ob Duplikate im Vergleich zu Liste A vorhanden sind.

Antworten:

6 für die Antwort № 1

Um auf die erste Frage zu antworten

Ich möchte wissen, ob es Doppeleinträge gibt Meine Klasse mit demselben Namen in der Liste.

du kannst das:

bool hasDuplicates =
listA.Count != listA.Select(c => c.Name).Distinct().Count();

Auf die zweite Frage antworten

Ich habe auch eine andere Liste und ich möchte wissen, ob es welche gibt Duplikate im Vergleich zu Liste A.

du kannst das:

bool hasDuplicates =
differentList.Select(c => c.Name).Intersect(listA.Select(c => c.Name)).Any();

2 für die Antwort № 2

Um nach doppelten Namen innerhalb eines zu suchen List<MyClass> list:

var names = new HashSet<String>();
foreach (MyClass t in list)
if(!names.Add(t.Name))
return "Duplicate name!"
return "No duplicates!"

oder Varianten, abhängig davon, was Sie tun möchten, wenn / keine "Duplikate" vorhanden sind. Für zwei separate Listen erstellen Sie einfach die names Set aus einer Liste und Schleife mit dieser Art vonÜberprüfen Sie auf der anderen Seite (Details hängen davon ab, was voraussichtlich für doppelte Namen innerhalb der ersten Liste, nur innerhalb der zweiten Liste oder nur zwischen einer Liste und der anderen Liste geschehen soll, wenn beide doppelt vorhanden sind, wenn sie isoliert betrachtet werden - Ihre Spezifikationen sind viel zu ungenau, um zu erraten, was Sie in jeder der vielen möglichen Kombinationen wollen oder erwarten!