我一直在试图找出是否有一种方法可以使用IEnumerable的求和方法减去两个值,而不是将它们相加?
IEnumerable<T> list = first
.Concat(second)
.GroupBy(x => new { x.crita, x.critb})
.Select(y => new T
{
//other fields//
vara= y.Sum(z => z.vara),
varb= y.Sum(z => z.varb),
varc= y.Sum(z => z.varc),
vard= y.Sum(z => z.vard)
});我用这个方法来得到我加入的两个IEnumerables之间的和,但是我也希望能够减去它们。
任何帮助都会很感激的。
另外,如果有人能告诉我如何获得产品和商,那就太棒了!
发布于 2017-10-06 16:47:51
Aggregate是Sum的哥哥,它也可以做减法和其他聚合。另一方面,如果要逐元素减法,则可以使用一般的Select投影.
阅读您的注释,一个简单的技巧是创建第二个IEnumerable的投影,该投影否定vara、varb等,然后使用相同的Sum函数计算组的聚合。因此,基本上您只需要做a + (-b)而不是a - b。以下几行的内容:
IEnumerable<T> list = first
.Concat(second.Select(n => new T() { vara = -n.vara...} )
.GroupBy(x => new { x.crita, x.critb})
.Select(y => new T
{
//other fields//
vara= y.Sum(z => z.vara),
varb= y.Sum(z => z.varb),
varc= y.Sum(z => z.varc),
vard= y.Sum(z => z.vard)
});https://stackoverflow.com/questions/46610405
复制相似问题