我正在尝试将编译查询用于我的 linq to sql 查询之一。此查询包含 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;
上述查询无法编译,因为它将列表作为输入之一。是否有任何解决方法或更好的方法来完成上述操作?