2010-05-18 89 views
0

我试图完成这样的查询对象的属性,以SQL:混合LINQ与泛型列表

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

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

有关如何使用“contains”或其他方法以易于阅读的方式过滤此信息的任何想法?

在此先感谢。

回答

3

只是项目的本地列表到你需要筛选具体的项目清单:

var listOfIds = listOfObjects.Select(o => o.Id); 
var query = 
    from a in DatabaseTable 
    where listOfIds.Contains(a.Id) 
    select a; 
+0

噢......我已经来不及了。 :) – 2010-05-18 22:07:28

+0

嘎...很明显。谢谢我是LINQ的新手。 – Ocelot20 2010-05-19 02:24:17

2
var listOfIds = listOfObjects.Select(x => x.Id).ToList(); 

var query = from a in DatabaseTable 
      where listOfIds.Contains(a.Id) 
      select a;