from f in CUSTOMERS
where depts.Contains(f.DEPT_ID)
select f.NAME
depts是部门ID的列表(IEnumerable<int>)

此查询工作正常,直到您传递一个大列表(例如约3000个dept id)..然后我得到此错误:



我将查询更改为:
var dept_ids = string.Join(" ", depts.ToStringArray());
from f in CUSTOMERS
where dept_ids.IndexOf(Convert.ToString(f.DEPT_id)) != -1
select f.NAME

使用IndexOf()修复了错误,但使查询速度变慢。还有其他解决方法吗?非常感谢。

最佳答案

我的解决方案(指南->指南列表):

List<tstTest> tsts = new List<tstTest>();
for(int i = 0; i < Math.Ceiling((double)Guides.Count / 2000); i++)
{
    tsts.AddRange(dc.tstTests.Where(x => Guides.Skip(i * 2000).Take(2000).Contains(x.tstGuid)));
}
this.DataContext = tsts;

09-20 09:50