C# EF如何选择不在集合中的元素
我有3个数据模型类product、order、orderRow 如何仅选择那些不是当前订单行的产品C# EF如何选择不在集合中的元素,c#,entity-framework,C#,Entity Framework,我有3个数据模型类product、order、orderRow 如何仅选择那些不是当前订单行的产品 var order = db.Orders.Find(order_id); var product= db.Products.Where(m => ((order==null) || order.Rows.Count(a => a.Product== m) < 1) ).AsQueryable(); var order=db.Orders.Find(订单id); var pr
var order = db.Orders.Find(order_id);
var product= db.Products.Where(m => ((order==null) || order.Rows.Count(a => a.Product== m) < 1) ).AsQueryable();
var order=db.Orders.Find(订单id);
var product=db.Products.Where(m=>((order==null)| | order.Rows.Count(a=>a.product==m)<1)).AsQueryable();
当我尝试此操作时,我得到“无法创建“Order”类型的常量值。在此上下文中仅支持基元类型或枚举类型。”我在这里做了一些假设,但您可以推断:
var nonSelectedProducts = from product in db.Products
where !order.Rows.Any(or => or.ProductId == product.Id)
select product
您应该能够在ID上执行负包含操作:
var productIds = order.Rows.Select(x => x.Product.Id);
var products = db.Products.Where(x => !productIds.Contains(x.Id));
我得到的错误是“无法创建'Order'类型的常量值”,因此所做的是
var nonSelectedProducts = from product in new List<product>(db.Products)
where !order.Rows.Any(or => or.ProductId == product.Id)
select product
var nonSelectedProducts=来自新列表中的产品(db.Products)
其中!order.Rows.Any(or=>or.ProductId==product.Id)
精选产品
您已设置这或多或少是我写的-我得到的错误是“无法创建'Order'类型的常量值”。在此上下文中只支持基元类型或枚举类型。“嗯,它起作用了-那么db.Products.Where().AsQueryable()和db.Products select中的p之间有什么区别p@SpoksST应该不会有什么区别,但我怀疑可能是由于
Count()的原因
?可能重复@Thewads是的,非常相似,但我没有从那里得到答案。