_databaseContext.Names.Where(x => strings.Contains(x.name) && specialID == 1);
HashSet<>
文字列のリストが一意である場合は、の代わりに を使用できますList<>
。より良いパフォーマンスが得られると思います。
HashSet<string> hs = new HashSet<string> { "test1", "test2", "etc" };
_databaseContext.Names.Where(x => hs.Contains(x.name) && specialID == 1);
編集:指摘のためにアレクセイ・レベンコフに+1-Exists
問題が発生するため、Contains
代わりに使用する必要があります。また、サーバーでクエリを実行する場合とList
同様に、生成された同じクエリを検証しました。HashSet
List
HashSet
生成されたクエリは次のようなものになります。
Select [name], [other columns]
From Names
Where [name] IN (N'test1', N'test2', N'etc')
ただし、 がローカル変数であると仮定specialID
すると、上記と同様の動的クエリが生成されますが、その値も SQL Server に渡されます。このクエリは、 を使用して実行されますsp_executesql
。