/ / Jak dowiedzieć się, czy na jednej liście są jakieś duplikaty? - c #, lista, duplikaty

Jak się dowiedzieć, czy istnieją jakieś duplikaty na jednej liście, a nie drugie? - c #, lista, duplikaty

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

Aby 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!