1

如何将 Linq 写入实体以创建类似于 SQL Server 中的 where in 子句?问题是我需要搜索的字段是可为空的 int。

我有以下代码,但它返回“无法创建类型为 'System.Collections.Generic.List`1' 的常量值。在此上下文中仅支持原始类型('例如 Int32、String 和 Guid')。 "

public IList<WantedInfoView> GetWanted(string idList)
{
    List<int> contactIDList = new List<int>();
    contactIDList = idList.Split(',').Select(n => int.Parse(n)).ToList();

    IEnumerable<WantedInfoView> wantedList = (
       from w in db.Wanteds
       where contactIDList.Contains(w.contact_id)
       select new WantedInfoView
       {
           ...
       }
    );
}
4

1 回答 1

1

请参阅实体框架的集合值参数?

接受的答案链接到Tip 8 - How to write 'WHERE IN' style queries using LINQ to Entities,这是您正在寻找的。

WHERE IN 子句线程似乎也在解决这个问题。

长话短说,您不能在 LINQ to Entities 查询中使用集合作为参数。该框架无法从中进行 SQL 查询。有一些解决方法,虽然不是很漂亮。

于 2012-08-09T23:13:03.047 回答