Учитывая следующий простой пример:
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();
Похоже, что CaseInsensitiveComparer фактически не используется для сравнения без учета регистра.
Другими словами distinctList содержит то же количество элементов, что и list. Вместо этого я бы ожидал, что, например, "Три" и "Три" считаются равными.
Я что-то упустил или это проблема с оператором Distinct?