LINQ:来自M-M表的总和

时间:2017-01-03 06:25:57

标签: c# linq

在我的M-M表格中,我有Quantity(int)特定订单的产品。

我正在尝试计算同一ProductId的数量总和,忽略OrderId。意思是我要在我的List集合中汇总特定产品的所有数量。

Product_Order:
    ---------------- ----------- ---------
    |   ProductId   | OrderId   | Quantity |
    ---------------- ----------- ---------

这就是我的想法(代码不会工作):

SumQuantity = collection.Sum(x=> x.Product_Order
                         .Where(c=>c.ProductId == product.ID)
                         .Select(Quantity))

(collection-list是我添加的产品选择产品列表)

3 个答案:

答案 0 :(得分:1)

据我所知,您的Quantity属于Product_Order。因此,您需要collection来限制您的产品ID。 我建议使用此查询:

var SumQuantity = Product_Order.Where(x=>collection.Any(o=>o.ProductId==x.ProductId))
                       .Sum(x=>x.Quantity);

或者,如果您的Quantity商标上有Product,并且想要使用此商标:

var SumQuantity = collection.Where(x=>Product_Order.Any(o=>o.ProductId==x.ProductId))
                   .Sum(x=>x.Quantity);

答案 1 :(得分:0)

你需要像这样构建Linq

collection.Where(c => c.Product_Order.ProductId == product.ID).Select(x => x.Product_Order.Quantity).Sum();

答案 2 :(得分:0)

如果Product_Order.Product是一个列表,那么你可以尝试这个

collection.Where(c => c.Product_Order.Product.Any(p=>p.id == product.ID)).Select(x => x.Product_Order.Quantity).Sum();