我有一个EF6查询需要的标识列表,并做了查询:LINQ实体框架6大。任何()
public IList<Audit> AuditsByIDs(List<int> ids)
{
return _db.Audits
.Include(p => p.User)
.Where(p => ids.Any(i => i == p.Id)).ToList();
}
它的工作原理为少数IDS的,但是当到达数百我得到的错误:
Some part of your SQL statement is nested too deeply. Rewrite the query or break it up into smaller queries.
如何获得查询返回才把IDS传入?我不能改变数据库:(
我会用相交,如果有可能,但它不似乎没有:(你能告诉我们生成的SQL吗? –
对于正在通过ID进行搜索的大型数据结构,您希望使用一些索引结构,如HashSet或字典,将会更快。 –
@ Some1Pr0否,它不会,它是LINQ to Ent它不管怎么说都会被转换成IN(item1,item2,...)'作为SQL查询的一部分。 – MarcinJuraszek