将LINQ to SQL与通用列表中的对象属性混合使用

时间:2010-05-18 22:00:54

标签: c# linq linq-to-sql

我正在努力完成类似这样的查询:

var query = from a in DatabaseTable
            where listOfObjects.Any(x => x.Id == a.Id)
            select a;

基本上,我想过滤结果,其中a.Id等于通用列表“listOfObjects”中某个对象的属性。我收到错误“除了Contains()运算符之外,本地序列不能用于查询运算符的LINQ to SQL实现。”

有关如何使用“包含”或其他方法以易读的方式过滤此内容的任何想法?

提前致谢。

2 个答案:

答案 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;