如何将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
{
...
}
);
}
答案 0 :(得分:1)
请参阅Collection-valued parameters with The Entity Framework?
接受的答案链接到Tip 8 - How to write 'WHERE IN' style queries using LINQ to Entities,这正是您要找的。 p>
WHERE IN clause线程似乎也在解决这个问题。
简而言之,您不能将集合用作LINQ to Entities查询中的参数。框架无法从中进行SQL查询。有一些解决方法,虽然不是很漂亮。