我需要有关linq查询的帮助
我有一个带有名称,库存和其他字段的产品表。可以有“重复的”产品名称,但有“不同的库存”。
我需要三件事:
因此,例如,如果我有一支带有库存1的产品笔。
然后是另一个具有相同名称“ pen”但具有库存3的产品
然后,我的选择只给了我一行“名称”为“ pen”,库存为“ 4”的行
我曾经有这样的查询:
var result = (from c in Products
where c.Inventory != 0
select new[] {
Convert.ToString(i++),
c.Name,
c.Family,
c.Inventory});
它有效,但是现在我需要添加“分组依据”产品名称,并对每个具有相同名称的产品的库存求和,但是我不知道如何
如果我很了解您的问题,那么您正在寻找以下内容:
var result = (from c in Products
where c.Inventory != 0
group c by new{c.Name,c.Family} into g
select new {g.Key.Name, g.Key.Family, Inventory=g.Sum(e=>e.Inventory)}).ToArray();
您可以group
在此msdn页面中找到有关如何使用子句的更多信息。
如果要在投影中添加另一个字段,而又不介意具有哪个值(如注释中所述),则可以使用First
扩展方法:
new {g.Key.Name,
g.Key.Family,
Country=g.First().Country,
Inventory=g.Sum(e=>e.Inventory)}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句