2013-03-12 37 views
1

元素我有3個數據模型類產品,訂單,orderRowEF如何sellect不在集合

如何只選擇非當前爲了行這些產品?

var order = db.Orders.Find(order_id); 
var product= db.Products.Where(m => ((order==null) || order.Rows.Count(a => a.Product== m) < 1) ).AsQueryable(); 

當我嘗試這個,我得到「無法創建類型‘訂單’的恆定值。只有基本類型或枚舉類型在這方面的支持。」

+0

可能的重複http://stackoverflow.com/questions/879411/entity-framework-unable-to-create-a-constant-value-of-type-closure-type – Thewads 2013-03-12 17:28:04

+0

@Thewads是非常相似,但我沒有從那裏得到答案。 – SpoksST 2013-03-12 17:45:10

回答

1

我在這裏做一些假設,但可以推斷:

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

這或多或少是我寫的 - 我得到的錯誤是「無法創建類型爲'Order'的常量值,只有原始類型或枚舉類型在此上下文中受支持。」 – SpoksST 2013-03-12 17:19:59

+0

嗯它的工作 - 然後有什麼區別db.Products.Where()。AsQueryable()和從p中db.Products選擇p – SpoksST 2013-03-12 17:30:04

+0

@SpoksST應該沒有什麼區別,但我懷疑它可能是' COUNT()'? – 2013-03-12 17:33:44

1

你應該能夠做一個負包含的ID:

var productIds = order.Rows.Select(x => x.Product.Id); 
var products = db.Products.Where(x => !productIds.Contains(x.Id)); 
0

我居然也得到了錯誤的「無法創建類型'訂單'的常量值,那麼做什麼是

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

並且您設置了