Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF如何选择不在集合中的元素_C#_Entity Framework - Fatal编程技术网

C# EF如何选择不在集合中的元素

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

我有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 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是的,非常相似,但我没有从那里得到答案。