我有以下代码:
var branches =Context.HierarchyBranches.Where(x => dataItemIds.Any(y => y == x.DataItemID));
return await branches.ToListAsync();
使用List<int> dataItemIds
并生成以下异常:
Some part of your SQL statement is nested too deeply. Rewrite the query or break it up into smaller queries.
当dataItemIds数组大于约80个项目时,但当列表中的项目较少时工作正常。
很明显,问题与dataItemIds列表的大小有关
我的问题是,我怎么能写这个查询?
我知道我可以使用存储过程等,但有没有办法用Linq,Entity等做到这一点?
答案 0 :(得分:1)
我非常确定如果用数组替换列表并使用以下内容,您将得到更好的答案:
var branches = Context.HierarchyBranches.Where(x => dataItemIds.Contains(x.DataItemID));
在Linq to SQL&#39;包含&#39;成为&#39; IN&#39;陈述,而“任何&#39;需要预定义并且可以创建内部SQL语句。