代码之家  ›  专栏  ›  技术社区  ›  Ocelot20

将Linq to SQL与泛型列表中对象的属性混合在一起

  •  0
  • Ocelot20  · 技术社区  · 14 年前

    我正试图完成这样的查询:

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

    基本上,我要过滤结果,其中a.id等于泛型列表“ListofObjects”中某个对象的属性。我得到了一个错误“除了contains()运算符之外,不能在查询运算符的linq to sql实现中使用本地序列。”

    关于如何使用“contains”或其他方法以易于阅读的方式过滤这些内容,有什么想法吗?

    事先谢谢。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Aaronaught    14 年前

    只需将本地列表投影到需要筛选的特定项目列表中:

    var listOfIds = listOfObjects.Select(o => o.Id);
    var query = 
        from a in DatabaseTable
        where listOfIds.Contains(a.Id)
        select a;
    
        2
  •  2
  •   Stephen Cleary    14 年前
    var listOfIds = listOfObjects.Select(x => x.Id).ToList();
    
    var query = from a in DatabaseTable
                where listOfIds.Contains(a.Id)
                select a;