如何写一个LINQ查询通过聚集和组合组? [英] How to write a LINQ query combining group by and aggregates?
本文介绍了如何写一个LINQ查询通过聚集和组合组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
由于以下输入,我怎么写LINQ查询或前pression返回聚集结果的数量设置?
Given the following input, how do I write a LINQ query or expression to return an aggregated result set for the quantity?
输入:
var foo = new[] { new { PO = "1", Line = 2, QTY = 0.5000 },
new { PO = "1", Line = 2, QTY = 0.2500 },
new { PO = "1", Line = 2, QTY = 0.1000 },
new { PO = "1", Line = 2, QTY = -0.1000 }
}.ToList();
期望的结果:
Desired result:
沿东西线
new { PO = "1", Line = 2, QTY = 0.7500 } // .5 + .25 + .1 + -.1
如何将我写的多条线路,以及(见FOO对象模型)?
How would I write it for multiple lines as well (see the object model in foo)?
推荐答案
这个怎么样:
var result = foo.GroupBy(x => x.Line)
.Select(g => new { PO = g.First().PO,
Line = g.Key,
QTY = g.Sum(x => x.QTY) });
在这种情况下,你只是有一个线,只需添加一个。单()
- 结果
是的IEnumerable
在设置中定义的匿名类型的富
。
In the case you just have one Line, just add a .Single()
- result
is an IEnumerable
of the anonymous type defined when you set up foo
.
编辑:
如果双方PO和线路应指定不同的组(PO可以有不同的值),它们都必须是组密钥的一部分:
If both PO and Line should designate different groups (PO can have different values), they both have to be part of the group key:
var result = foo.GroupBy(x => new { x.PO, x.Line})
.Select(g => new {
PO = g.Key.PO,
Line = g.Key.Line,
QTY = g.Sum(x => x.QTY)
});
这篇关于如何写一个LINQ查询通过聚集和组合组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文