LINQ Eindeutiger Operator, Groß- / Kleinschreibung ignorieren?
Gegeben das folgende einfache Beispiel:
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();
Es erscheint der CaseInsensitiveComparer ist eigentlich nicht für eine groß- /Kleinschreibung-Vergleich.
In anderen Worten distinctList enthält die gleiche Anzahl von Elementen wie Liste. Stattdessen würde ich erwarten, zum Beispiel, "Drei" und "drei" werden als gleich angesehen.
Bin ich etwas fehlt, oder ist das ein Problem mit der Distinct-operator?
InformationsquelleAutor der Frage Ash | 2008-11-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
StringComparer
tut, was Sie brauchen:(oder invariant /Ordnungszahl /etc je nach den Daten, die Sie vergleichen)
InformationsquelleAutor der Antwort Marc Gravell
[Siehe Marc Gravells beantworten, wenn Sie wollen, die übersichtlichen Zugang]
Nach einigen Untersuchungen und ein gutes feedback von Bradley Grainger ich habe implementiert die folgenden IEqualityComparer. Es suports eine Kleinschreibung Distinct () - Anweisung (nur übergeben Sie eine Instanz dieser zu den Distinct-operator) :
InformationsquelleAutor der Antwort Ash
Hier ist eine viel einfachere version.
InformationsquelleAutor der Antwort
Ausgang
InformationsquelleAutor der Antwort Javed Ahmad