大文字と小文字を区別しない文字列比較を実行するためにToUpperとToLowerを使用するのは賢明ではないことを読みましたが、LINQ-to-SQLに関しては代替手段がありません。String.CompareのignoreCaseおよびCompareOptions引数は、LINQ-to-SQLによって無視されます(大文字と小文字を区別するデータベースを使用している場合は、大文字と小文字を区別しない比較を要求しても、大文字と小文字を区別する比較が行われます)。ToLowerまたはToUpperはここで最良のオプションですか?一方が他方よりも優れていますか?私はどこかでToUpperの方が優れていると読んだと思いましたが、それがここで当てはまるかどうかはわかりません。(私は多くのコードレビューを行っており、誰もがToLowerを使用しています。)
Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0
これは、row.Nameを「test」と単に比較し、大文字と小文字を区別するデータベースで「Test」と「TEST」を返さないSQLクエリに変換されます。
LINQQuery.Contains("VaLuE", StringComparer.CurrentCultureIgnoreCase)
およびのような他のLINQ拡張機能でも動作しLINQQuery.Except(new string[]{"A VaLUE","AnOTher VaLUE"}, StringComparer.CurrentCultureIgnoreCase)
ます。ワフー!