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

如何用LINQ统计List<Tuple<int,double>>重复项数量并求和排序?

解决方案

可以通过LINQ的分组、聚合和排序方法直接实现需求,具体代码和说明如下:

核心实现代码

List<Tuple<int, double>> originalList = new List<Tuple<int, double>>
{
    Tuple.Create(1, 2.5),
    Tuple.Create(2, 3.0),
    Tuple.Create(1, 1.5),
    Tuple.Create(3, 4.0),
    Tuple.Create(2, 2.0),
    Tuple.Create(2, 1.0)
};

// 生成目标列表
var result = originalList
    .GroupBy(tuple => tuple.Item1)
    .Select(group => new 
    {
        OriginalItem1 = group.Key,
        RepeatCount = group.Count(),
        TotalItem2 = group.Sum(tuple => tuple.Item2)
    })
    .OrderByDescending(stats => stats.RepeatCount)
    .ToList();

代码分步解释

  • GroupBy(tuple => tuple.Item1):将原列表中Item1值相同的元组归为同一组,分组键就是Item1的值
  • Select(...):对每个分组做投影处理,提取三个核心数据:原Item1值、分组内元素的重复数量、分组内所有Item2的总和
  • OrderByDescending(stats => stats.RepeatCount):按照重复数量从大到小排序结果
  • ToList():将最终的查询结果转换为列表类型

扩展:返回强类型结果

如果需要返回强类型而非匿名类型,可以自定义一个类来存储统计结果:

public class ItemStats
{
    public int Item1 { get; set; }
    public int RepeatCount { get; set; }
    public double TotalItem2 { get; set; }
}

// 修改Select部分代码即可
.Select(group => new ItemStats
{
    Item1 = group.Key,
    RepeatCount = group.Count(),
    TotalItem2 = group.Sum(tuple => tuple.Item2)
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:05:14