次の簡単な例を考えてみましょう:
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と同じ数の項目が含まれています。代わりに、たとえば「3」と「3」は等しいと見なされます。
何か不足していますか、それともDistinctオペレーターの問題ですか?