_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同様に、生成された同じクエリを検証しました。HashSetListHashSet
生成されたクエリは次のようなものになります。
Select [name], [other columns]
From Names
Where [name] IN (N'test1', N'test2', N'etc')
ただし、 がローカル変数であると仮定specialIDすると、上記と同様の動的クエリが生成されますが、その値も SQL Server に渡されます。このクエリは、 を使用して実行されますsp_executesql。