.ToLower()
を使用しないでください 大文字と小文字を区別しない比較を実行します。理由は次のとおりです:
LOWER
です =
の代わりに 大文字と小文字を区別しない照合を使用します。
代わりに、StringComparison.OrdinalIgnoreCase
を使用してください または StringComparison.CurrentCultureIgnoreCase
:
var q = from f in Context.Foos
where f.Bar.Equals("hi", StringComparison.OrdinalIgnoreCase)
select f;
ただし、Contains()
の場合 問題があります:Equals
とは異なります , StartsWith
など、StringComparison
のオーバーロードがありません 口論。なんで?良い質問; Microsoft に問い合わせてください。
それを、LOWER
に対する SQL Server の制限と組み合わせる つまり、あなたがやりたいことをする簡単な方法はありません。
考えられる回避策は次のとおりです:
- 全文索引を使用し、手順で検索を行います。
Equals
を使用する またはStartsWith
代わりに、可能であれば、あなたのタスクのために- 列のデフォルトの照合順序を変更しますか?