エンティティへの LINQ と大文字と小文字の区別: 包括的なガイド
LINQ to Entities クエリにおける大文字と小文字の区別は、基盤となるデータベースに大きく影響されます。 たとえば、SQL Server では、デフォルトで大文字と小文字を区別しない照合順序が使用されます。 これは、t.Name == "ThingamaBob"
のようなクエリでは大文字と小文字の違いが無視されることを意味します。
データベースレベルのソリューション (推奨)
大文字と小文字を区別して比較するための最も効率的で信頼性の高い方法は、データベース列の照合順序を調整することです。 SQL Server では、これには ALTER TABLE
コマンドの使用が含まれます。例: ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS
は、Name
列で大文字と小文字の区別を強制します。
クライアント側のアプローチ (代替)
データベースの照合順序を変更できない場合、クライアント側の回避策として、二次比較に LINQ to Objects を利用します。
<code class="language-csharp">Thingies.Where(t => t.Name == "ThingamaBob") .AsEnumerable() .First(t => t.Name == "ThingamaBob");</code>
重要な注意事項:
ObjectQuery.ToTraceString()
を使用すると、生成された SQL を検査して、適用された照合順序を明らかにできます。以上がLINQ to Entities クエリで大文字と小文字の区別を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。