Ich habe gelesen, dass es unklug ist, ToUpper und ToLower zu verwenden, um Zeichenfolgenvergleiche ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen, aber ich sehe keine Alternative, wenn es um LINQ-to-SQL geht. Die Argumente ignoreCase und CompareOptions von String.Compare werden von LINQ-to-SQL ignoriert (wenn Sie eine Datenbank verwenden, bei der zwischen Groß- und Kleinschreibung unterschieden wird, erhalten Sie einen Vergleich zwischen Groß- und Kleinschreibung, auch wenn Sie nach einem Vergleich ohne Berücksichtigung von Groß- und Kleinschreibung fragen). Ist ToLower oder ToUpper hier die beste Option? Ist einer besser als der andere? Ich dachte, ich hätte irgendwo gelesen, dass ToUpper besser ist, aber ich weiß nicht, ob das hier zutrifft. (Ich mache viele Codeüberprüfungen und jeder verwendet ToLower.)
Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0
Dies führt zu einer SQL-Abfrage, die row.Name einfach mit "test" vergleicht und in einer Datenbank mit Groß- und Kleinschreibung nicht "Test" und "TEST" zurückgibt.
LINQQuery.Contains("VaLuE", StringComparer.CurrentCultureIgnoreCase)
undLINQQuery.Except(new string[]{"A VaLUE","AnOTher VaLUE"}, StringComparer.CurrentCultureIgnoreCase)
. Wahoo!