Biorąc pod uwagę następujący prosty przykład:
List<string> list = new List<string>() { "One", "Two", "Three", "three", "Four", "Five" };
CaseInsensitiveComparer ignoreCaseComparer = new CaseInsensitiveComparer();
var distinctList = list.Distinct(ignoreCaseComparer as IEqualityComparer<string>).ToList();
Wygląda na to, że CaseInsensitiveComparer nie jest w rzeczywistości używany do porównania bez uwzględniania wielkości liter.
Innymi słowy odrębna lista zawiera taką samą liczbę elementów jak lista . Zamiast tego spodziewałbym się, na przykład, że „trzy” i „trzy” będą uważane za równe.
Czy coś mi brakuje, czy jest to problem z operatorem Distinct?
OutPut będzie
źródło
Oto znacznie prostsza wersja.
źródło