我正在努力完成类似这样的查询:
var query = from a in DatabaseTable
where listOfObjects.Any(x => x.Id == a.Id)
select a;
基本上,我想过滤结果,其中a.Id等于通用列表“listOfObjects”中某个对象的属性。我收到错误“除了Contains()运算符之外,本地序列不能用于查询运算符的LINQ to SQL实现。”
有关如何使用“包含”或其他方法以易读的方式过滤此内容的任何想法?
提前致谢。
答案 0 :(得分:3)
只需将您的本地列表投影到需要过滤的特定项目列表中:
var listOfIds = listOfObjects.Select(o => o.Id);
var query =
from a in DatabaseTable
where listOfIds.Contains(a.Id)
select a;
答案 1 :(得分:2)
var listOfIds = listOfObjects.Select(x => x.Id).ToList();
var query = from a in DatabaseTable
where listOfIds.Contains(a.Id)
select a;