c# - 从具有相同属性值的集合中选择对象
问题描述
有没有一种简单的方法来选择具有相同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)
});
}
解决方案
要获得每种货币的余额总和,您可以 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。
推荐阅读
- c++ - 模板化的类和友元函数
- node.js - Nest.js 框架热重载不起作用
- django - Django-过滤一个或多个反向外键符合条件的结果
- batch-file - 任务计划程序运行批处理文件 - 批处理文件仅部分工作?
- api - PowerShell HTTPIE
- hibernate - 使用带有查询注释 Spring Data JPA 的分页时出错
- python - pyspark 中的单热编码,连续多个 1
- python - Python 如何读取 .txt 文件中的行并将它们拆分为列表?
- matlab - 在 Matlab 中从 Gumbel 分布中绘制随机数
- c++ - 具有默认模板类型的默认构造函数的类型推导