其中In Lin对Linq中的可空字段

时间:2012-08-09 22:43:39

标签: c# linq entity-framework nullable contains

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

我有以下代码,但它返回“无法创建类型'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
       {
           ...
       }
    );
}

1 个答案:

答案 0 :(得分:1)

请参阅Collection-valued parameters with The Entity Framework?

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

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

简而言之,您不能将集合用作LINQ to Entities查询中的参数。框架无法从中进行SQL查询。有一些解决方法,虽然不是很漂亮。