首页 > 解决方案 > 从具有相同属性值的集合中选择对象

问题描述

有没有一种简单的方法来选择具有相同currencyId 的成员,以便我可以将它们相互求和,或者如果每个currencyId 都有,我是否需要做其他事情?

if(model.CurrencyId == -1)
        {
            resultModel.Add(new ReportModel
            {
                AccountName = "Sum",
                BalanceSum = resultModel.Where(q => q.CurrencyId == 1).Sum(q => q.Balance)

            });
        }
        else
        {
            resultModel.Add(new ReportModel
            {
                AccountName = "Sum",
                BalanceSum = resultModel.Sum(q => q.Balance)

            });
        }

标签: c#collections

解决方案


要获得每种货币的余额总和,您可以 preform groupBy,然后是select& sum

例如:

var balanceSum = t.GroupBy(q => q.CurrencyId)
    .Select(q => q.Sum(x => x.Balance));

要将其添加到 resultModel,您可以执行以下操作:

var reportData = t.GroupBy(q => q.CurrencyId)
    .Select(q => new ReportModel()
    {
        AccountName = "Sum",
        BalanceSum = q.Sum(x => x.Balance)
    });

resultModel.AddRange(reportData);

如果数据只分配给 resultModel 一次,那么您可能可以将 AddRange 替换为 equals。


推荐阅读