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

如何通过C# LINQ/Lambda向列表添加汇总所有项的新元素

给Purches列表添加汇总元素

需求描述

我有一个Purches类型的列表,需要通过C#的LINQ或Lambda表达式添加一个新元素,用来汇总列表所有元素的Items和TotalPrice属性。

现有代码

类定义:

public class Purches
{
    public int Id { get; set; }
    public int Items { get; set; }
    public int TotalPrice { get; set; }
}

初始列表:

List<Purches> purchesList = new List<Purches>() {
    new Purches() {
        Id = 1,
        Items = 3,
        TotalPrice = 220
    },
    new Purches() {
        Id = 2,
        Items = 5,
        TotalPrice = 300
    }
};

期望结果

列表末尾新增一个汇总元素,Id为0,Items为所有元素的Items之和,TotalPrice为所有元素的TotalPrice之和:

List<Purches> purchesList = new List<Purches>() {
    new Purches() {
        Id = 1,
        Items = 3,
        TotalPrice = 220
    },
    new Purches()
    {
        Id = 2,
        Items = 5,
        TotalPrice = 300
    },
    new Purches()
    {
        Id = 0,
        Items = 8,
        TotalPrice = 550
    }
};

实现方案

方案1:修改原列表(直接添加汇总元素)

使用LINQ的Sum方法结合Lambda表达式计算汇总值,再添加到原列表:

// 计算汇总元素
var summaryItem = new Purches
{
    Id = 0,
    Items = purchesList.Sum(p => p.Items),
    TotalPrice = purchesList.Sum(p => p.TotalPrice)
};

// 添加到原列表
purchesList.Add(summaryItem);

方案2:生成新列表(不修改原列表)

如果不想改动原列表,可以用Concat方法将原列表和汇总元素拼接成新列表:

var newPurchesList = purchesList.Concat(new List<Purches>
{
    new Purches
    {
        Id = 0,
        Items = purchesList.Sum(p => p.Items),
        TotalPrice = purchesList.Sum(p => p.TotalPrice)
    }
}).ToList();

内容的提问来源于stack exchange,提问作者Naomi Messing

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:40:45