Given the following simple example:
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();
It appears the CaseInsensitiveComparer is not actually being used to do a case-insensitive comparison.
In other words distinctList contains the same number of items as list. Instead I would expect, for example, ‘Three’ and ‘three’ be considered equal.
Am I missing something or is this an issue with the Distinct operator?
StringComparerdoes what you need:(or invariant / ordinal / etc depending on the data you are comparing)