次の簡単な例を考えます。
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 演算子の問題ですか?