.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代わりに、可能であれば、あなたのタスクのために- 列のデフォルトの照合順序を変更しますか?