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 № 1Um 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!