【发布时间】:2020-10-18 18:27:17
【问题描述】:
我想使用基于某个传递值的 LINQ 表达式来挑选出表中的行,然后对这些行中的每一行的特定列属性求和,同时保持各行的总和彼此分开。
用户使用数量输入输入特定数量值 - 此传递的数量值需要在 LINQ 表达式中使用,以过滤出满足所需条件的行。
下面是分配给传递的数量值的变量:
int quantitySelected;
JObject passedQuantity = JObject.Parse(data);
quantitySelected = (int)passedQuantity["qtySelect"]
“quantitySelected”现在等于用户传递的值 - 现在,在 LINQ 表达式中使用此值,我希望能够根据满足的条件过滤特定表(InvoiceLine),然后根据外键标识符 (ProductID) 包含所有过滤后的行:
var dynamicReader = DBAccessor.InvoiceLines.Where(zz => zz.Quantity >= quantitySelected).Include(yy => yy.ProductID);
我希望将数量大于或等于用户输入的所有行存储在动态阅读器中,并参考与它们关联的 ProductID。比如:
我希望能够挑出 ProductID 为 8 的行(可以在此处看到两次),然后将它们的数量相加,(因此 ProductID 8 最终的总和为 6)等等(对于每个重复的 ProductID)。
有没有办法使用 LINQ 查询表达式来完成此任务?还是我需要使用额外的 C#?
【问题讨论】:
-
你试过
DBAccessor.InvoiceLines.Where(zz => zz.ProductID == 8).Sum(x => x.Quantity)吗? -
我真的不明白这是如何解决问题的,因为 OP 希望使用数量值来过滤数据@SowmyadharGourishetty
-
"ProductID 为 8 的行" - 行,确定吗?你期望结果是什么类型?
.GroupBy(r => r.ProductID).Select(rg => new { ProductID = rg.Key, Quantity = rg.Sum(r => r.Quantity) })