1

我有 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'类型的常量值。在这种情况下只支持原始类型或枚举类型。”

4

3 回答 3

1

我在这里做了一些假设,但你可以推断:

var nonSelectedProducts = from product in db.Products
                          where !order.Rows.Any(or => or.ProductId == product.Id)
                          select product
于 2013-03-12T17:17:57.480 回答
1

您应该能够对 id 进行否定包含:

var productIds = order.Rows.Select(x => x.Product.Id);
var products = db.Products.Where(x => !productIds.Contains(x.Id));
于 2013-03-12T17:31:49.240 回答
0

我收到错误消息“无法创建'Order'类型的常量值,所以所做的是

var nonSelectedProducts = from product in new List<product>(db.Products)
                      where !order.Rows.Any(or => or.ProductId == product.Id)
                      select product

你已经准备好了

于 2015-11-30T18:47:29.347 回答