linq to sql クエリの 1 つにコンパイル済みクエリを使用しようとしています。このクエリには 5 ~ 6 個の結合が含まれています。コンパイルされたクエリを作成できましたが、直面している問題は、キーが入力として渡されたキーのコレクション内にあるかどうかをクエリで確認する必要があることです。ただし、コンパイルされたクエリでは、コレクションを渡すことはできません (コレクションにはさまざまな数のアイテムが含まれる可能性があるため、許可されません)。
例えば
関数への入力はキーのコレクションです。言う:List<Guid> InputKeys
List<SomeClass> output = null;
var compiledQuery = CompiledQuery.Compile<DataContext, List<Guid>, IQueryable<SomeClass>>(
(context, inputKeys) => from a in context.GetTable<A>()
where inputKeys.Contains(a.Key)
select a);
using(var dataContext = new DataContext())
{
output = compiledQuery(dataContext, InputKeys).ToList();
}
return output;
上記のクエリは、リストを入力の 1 つとして取っているため、コンパイルされません。上記を行うための回避策またはより良い方法はありますか?