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?
StringComparer
does what you need:
List<string> list = new List<string>() { "One", "Two", "Three", "three", "Four", "Five" }; var distinctList = list.Distinct( StringComparer.CurrentCultureIgnoreCase).ToList();
(or invariant / ordinal / etc depending on the data you are comparing)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With