You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LINQ对嵌套数组按税种名称分组并计算总额

税务数据按税种分组求和的LINQ实现方案

原始税务数据

原始业务数据如下:

_id:"63624b321e78f38a3d6baf3e"
Taxes
[0] TaxName:CGST
    Amount:9.0
[1] TaxName:SGST
    Amount:8.0
_id:"63624b321e78f38a3d6baf3e"
Taxes
[1] TaxName:SGST
    Amount:8.0

需求说明

按TaxName字段分组,计算每个税种的金额总和,预期结果如下:

CGST:9.0
SGST:16.0

当前错误代码

已创建包含taxes[]数组的movieSummary对象,尝试的LINQ分组代码未得到正确结果:

movieSummary.Add(new DSMovieSummaryReport
                 {
                     MovieId = orderTicket.MovieId,                             
                     Taxes= orderTicket.Taxes,
                 });

var groupByTaxNamesQuery =
    from tax in movieSummary
    group tax by tax.Taxes into newGroup
    orderby newGroup.Key
    select newGroup;

正确实现方案

你的代码问题在于直接按整个Taxes数组分组,而没有遍历每个独立的税种条目。需要先将movieSummary中所有对象的Taxes数组扁平化为单个税种条目集合,再按TaxName分组求和。

方式一:LINQ查询语法

var taxSummary =
    from summary in movieSummary
    from tax in summary.Taxes // 扁平化所有税种条目
    group tax by tax.TaxName into taxGroup
    select new 
    {
        TaxName = taxGroup.Key,
        TotalAmount = taxGroup.Sum(t => t.Amount)
    };

方式二:LINQ方法链语法

var taxSummary = movieSummary
    .SelectMany(summary => summary.Taxes) // 将所有Taxes数组扁平为单个序列
    .GroupBy(tax => tax.TaxName)
    .Select(taxGroup => new 
    {
        TaxName = taxGroup.Key,
        TotalAmount = taxGroup.Sum(t => t.Amount)
    });

结果输出示例

如果需要输出预期格式的结果,可遍历查询结果:

foreach (var taxItem in taxSummary)
{
    Console.WriteLine($"{taxItem.TaxName}:{taxItem.TotalAmount}");
}

内容的提问来源于stack exchange,提问作者Anjana Padmesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 08:50:26