我有一個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