所以,我正在尝试返回一个人员集合,其ID包含在本地创建的ID集合中(IQueryable)
当我指定“本地创建的集合”时,我的意思是Ids集合不是来自LinqToSql查询,而是以编程方式创建(基于用户输入)。 我的查询如下:
var qry = from p in DBContext.People
where Ids.Contains(p.ID)
select p.ID;
这会导致以下异常......
“不支持使用本地集合的查询”
如何找到我本地创建的Ids集合中包含id的所有人?
是否可以使用LinqToSql?
答案 0 :(得分:35)
如果Ids是List,数组或类似的,则L2S将转换为包含。
如果Ids是IQueryable,只需在查询中使用它之前将其转换为列表。例如:
List<int> listOfIDs = IDs.ToList();
var query =
from st in dc.SomeTable
where listOfIDs.Contains(st.ID)
select .....
答案 1 :(得分:30)
我也在努力解决这个问题。使用Any()代替
解决了我的问题people.Where(x => ids.Any(id => id == x.ID))
答案 2 :(得分:0)
我很抱歉,但这里的答案对我不起作用,因为我正在进行动态类型。
我所做的是在一个效果很好的循环中使用“UNION”。方法如下:
var firstID = cityList.First().id;
var cities = dc.zs_Cities.Where(c => c.id == firstID);
foreach(var c in cityList)
{
var tempCity = c;
cities = cities.Union(dc.zs_Cities.Where(cty => cty.id == tempCity.id));
}