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

如何通过MaxBy()获取列表中的全部最大值?

解决方案

要获取所有对应最大值的元素,你可以分两步操作:先找出列表中的最大Total值,再筛选出所有Total等于该最大值的元素。

代码实现

首先修正结构体名称的一致性(原代码中结构体定义为Amounts,调用时用了Amount,这里统一为Amount):

public struct Amount
{
    public string Name;
    public int Total;
}

然后实现核心逻辑:

// 示例数据源
List<Amount> amounts = new List<Amount>
{
    new Amount { Name = "Name1", Total = 31 },
    new Amount { Name = "Name2", Total = 35 },
    new Amount { Name = "Name3", Total = 33 },
    new Amount { Name = "Name4", Total = 35 }
};

// 1. 获取列表中的最大Total值
int maxTotal = amounts.Max(x => x.Total);

// 2. 筛选所有Total等于最大值的元素
List<Amount> highestAmounts = amounts.Where(x => x.Total == maxTotal).ToList();

链式调用简化写法

也可以将两步合并为一行链式调用:

List<Amount> highestAmounts = amounts.Where(x => x.Total == amounts.Max(y => y.Total)).ToList();

空列表异常处理(可选)

如果列表可能为空,建议先做判断避免抛出异常:

List<Amount> highestAmounts = new List<Amount>();
if (amounts.Any())
{
    int maxTotal = amounts.Max(x => x.Total);
    highestAmounts = amounts.Where(x => x.Total == maxTotal).ToList();
}

执行后即可得到所有符合条件的元素:{Name2, 35}和{Name4, 35}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:40:32