Mam listę, w której MyClass ma właściwość „Nazwa”. Chcę wiedzieć, czy na liście jest zduplikowana nazwa MyClass o tej samej nazwie.
Mam też inną listę i chcę wiedzieć, czy są jakieś duplikaty w porównaniu do listy A.
Odpowiedzi:
6 dla odpowiedzi № 1Aby odpowiedzieć na pierwsze pytanie
Chcę wiedzieć, czy są duplikaty MyClass o tej samej nazwie w lista.
możesz to zrobić:
bool hasDuplicates =
listA.Count != listA.Select(c => c.Name).Distinct().Count();
W odpowiedzi na drugie pytanie
Mam też inną listę i ja chcę wiedzieć, czy są jakieś duplikaty w porównaniu do listy A.
możesz to zrobić:
bool hasDuplicates =
differentList.Select(c => c.Name).Intersect(listA.Select(c => c.Name)).Any();
2 dla odpowiedzi nr 2
Aby sprawdzić zduplikowane nazwy w jednym List<MyClass>
list
:
var names = new HashSet<String>();
foreach (MyClass t in list)
if(!names.Add(t.Name))
return "Duplicate name!"
return "No duplicates!"
lub warianty w zależności od tego, co chcesz zrobić, gdy istnieją / nie są duplikatami. W przypadku dwóch oddzielnych list po prostu zbuduj names
ustawić z jednej listy i zapętlić z tego rodzajuzaznacz drugą (szczegóły zależą od tego, co powinno się zdarzyć w przypadku zduplikowanych nazw tylko na pierwszej liście, tylko na drugiej liście lub tylko między jedną listą a drugą, gdy każda z nich jest wolna od duplikatów, jeśli rozpatrywana osobno - twoje specyfikacje są zbyt nieprecyzyjne, aby pozwolić mi odgadnąć, czego chcesz lub oczekujesz w każdej z wielu możliwych kombinacji!