EF如何选择不在集合中的元素
本文关键字:集合 元素 何选择 选择 EF | 更新日期: 2023-09-27 18:03:28
我有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();
当我尝试这个时,我得到"无法创建类型'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