Dado el siguiente ejemplo simple:
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();
Parece que CaseInsensitiveComparer no se está utilizando en realidad para hacer una comparación que no distingue entre mayúsculas y minúsculas.
En otras palabras, differentList contiene el mismo número de elementos que list . En su lugar, esperaría, por ejemplo, que "tres" y "tres" se consideren iguales.
¿Me estoy perdiendo algo o se trata de un problema con el operador Distinct?
OutPut será
fuente
Aquí hay una versión mucho más simple.
fuente