首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在LINQ中使用IEnumerable.Sum进行减法

在LINQ中使用IEnumerable.Sum进行减法
EN

Stack Overflow用户
提问于 2017-10-06 16:45:15
回答 1查看 585关注 0票数 0

我一直在试图找出是否有一种方法可以使用IEnumerable的求和方法减去两个值,而不是将它们相加?

代码语言:javascript
复制
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之间的和,但是我也希望能够减去它们。

任何帮助都会很感激的。

另外,如果有人能告诉我如何获得产品和商,那就太棒了!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-06 16:47:51

AggregateSum的哥哥,它也可以做减法和其他聚合。另一方面,如果要逐元素减法,则可以使用一般的Select投影.

阅读您的注释,一个简单的技巧是创建第二个IEnumerable的投影,该投影否定varavarb等,然后使用相同的Sum函数计算组的聚合。因此,基本上您只需要做a + (-b)而不是a - b。以下几行的内容:

代码语言:javascript
复制
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)
                  });
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46610405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档