我有一个带有列的表结构
FeesNormal
FeesCustom
货币
现在我正在寻找按货币计算的SUM功能组.
例如20美元+ 30欧元+ 40 INR这个表格就是这样的
如果FeesCustom> 0,我还必须考虑这个场景我必须忽略该行的FeesNormal
样本日期和预期结果是这样的
FeesNormal FeesCustom Currency
10 0 USD
15 25 USD //in this case can ignore FeesNormal Since FeesCustom is more
5 10 EUR //same for this row ignore FeesNormal
10 0 EUR
Expected result 35 USD 20 EUR
Run Code Online (Sandbox Code Playgroud)
我能够使用linq找到总和
int sum_custom=(int)fee_list.Where(p => p.FeesCustom > 0).Sum(p => p.FeesCustom);
int sum_normal = (int)fee_list.Where(p => p.FeesCustom ==0).Sum(p => p.FeesNormal);
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 23
在我看来,你只需要从"入门"到"有效费用"的预测,你可以总结 - 如:
var result = source
.GroupBy(x => x.Currency)
.Select(g => new {
Currency = g.Key,
Total = g.Sum(x => x.FeesCustom > 0 ? x.FeesCustom : x.FeesNormal)
});
Run Code Online (Sandbox Code Playgroud)
这相当于:
var result = source
.GroupBy(x => x.Currency,
(key, values) => new {
Currency = key,
Total = values.Sum(x => x.FeesCustom > 0 ? x.FeesCustom : x.FeesNormal)
});
Run Code Online (Sandbox Code Playgroud)
或者先进行转换:
var result = source
.Select(x => new {
x.Currency,
x.Fee = x => x.FeesCustom > 0 ? x.FeesCustom : x.FeesNormal
})
.GroupBy(x => x.Currency, x => x.Fee,
(key, values) => new { Currency = key, Fee = values.Sum() });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32130 次 |
| 最近记录: |