在返回SystemException的linq查询中使用.Contains
我在尝试编写linq查询时遇到了一些问题 我有一个已经修改过的产品列表,所以我试图从数据库中获取产品列表,以允许我对其应用更改 我尝试了两种不同的查询在返回SystemException的linq查询中使用.Contains,linq,entity-framework,Linq,Entity Framework,我在尝试编写linq查询时遇到了一些问题 我有一个已经修改过的产品列表,所以我试图从数据库中获取产品列表,以允许我对其应用更改 我尝试了两种不同的查询 var query = from p in db.Products where products.Select(z => z.id).Contains(p.Id) select p; var query2 = from p in db.Products
var query = from p in db.Products
where products.Select(z => z.id).Contains(p.Id)
select p;
var query2 = from p in db.Products where (from o in products
select o.id)
.Contains(p.Id)
select p;
两次尝试都返回一个错误
base{System.SystemException}={“无法创建类型为'ProjectABC.Models.ProductModel'的常量值。在此上下文中仅支持基元类型('例如Int32、String和Guid')。”}
我做错了什么?前几天我也遇到了同样的问题,似乎EF不支持Select()。Contains()没有给出错误。在测试了一段时间后,我最终将它拆分为您的情况下对应的内容
var IDs = products.Select(z=>z.id);
var query = from p in db.Products
where IDs.Contains(p.Id)
select p;
在我的例子中,当“产品”集合在内存中时(即来自数据库的ToList()结果),这一点很好地发挥了作用