linqからsqlクエリのいずれかのコンパイル済みクエリを使用しようとしています。このクエリには、5〜6個の結合が含まれます。私はコンパイルされたクエリを作成することができましたが、私が直面している問題は、キーが入力として渡されたキーのコレクション内にあるかどうかを照会する必要があることです。しかし、コンパイルされたクエリはコレクションの渡しを許可しません(コレクションにはアイテム数が異なるため、許可されないため)。linq to sqlコンパイル済みクエリのヘルプ
たとえば、
は、キーのコレクションです。セイ: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つとしてリストを取っているので、上記のクエリはコンパイルされません。上記を行うための回避策や改善策はありますか?
コンパイル済みのクエリではなく、通常のクエリを使用できますか? – Gabe
@Gabe:できました。しかし、私が言及したように、それは複雑なクエリであり、毎回コンパイルするコストを排除できるかどうかを確認したい。ありがとう。 – stackoverflowuser