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

Linq分组统计问题:如何在结果中包含描述字段

解决方案

你的问题在于原代码仅按Name分组,且未从分组中提取Description字段。根据示例数据,同一Name对应的Description完全一致,这里提供两种实现方式:

方式一:按Name分组,提取组内统一的Description

如果可以确定同一Name的Description始终相同,直接从分组中取任意元素的Description即可:

public void GetList()
{
    List<(string Name, string Description)> itemlist = new List<(string Name, string Description)>();

    // 数据添加部分保持不变
    itemlist.Add(("Apple", "ABCDED"));
    itemlist.Add(("Pear", "KLMAN"));
    itemlist.Add(("Apple", "ABCDED"));
    itemlist.Add(("Peach", "EFGHI"));
    itemlist.Add(("Apple", "ABCDED"));
    itemlist.Add(("Peach", "EFGHI"));
    itemlist.Add(("Apple", "ABCDED"));
    itemlist.Add(("Banana", "MNOPQ"));
    itemlist.Add(("Cherry", "PQRST"));
    itemlist.Add(("Peach", "EFGHI"));
    itemlist.Add(("Banana", "MNOPQ"));
    itemlist.Add(("Pear", "KLMAN"));
    itemlist.Add(("Apple", "ABCDED"));

    // 修改分组后的Select逻辑,添加Description字段
    var newlist = itemlist
        .GroupBy(i => i.Name)
        .Select(group => new 
        { 
            Name = group.Key, 
            Count = group.Count(), 
            Description = group.First().Description // 取组内第一个元素的Description
        })
        .ToList();

    // 打印包含三个字段的结果
    foreach (var item in newlist)
    {
        Debug.Print($"{item.Name} {item.Count} {item.Description}");
    }
}

方式二:按(Name, Description)组合分组(更严谨)

如果存在同一Name对应不同Description的场景,按组合字段分组能确保计数准确:

public void GetList()
{
    List<(string Name, string Description)> itemlist = new List<(string Name, string Description)>();

    // 数据添加部分保持不变
    itemlist.Add(("Apple", "ABCDED"));
    itemlist.Add(("Pear", "KLMAN"));
    itemlist.Add(("Apple", "ABCDED"));
    itemlist.Add(("Peach", "EFGHI"));
    itemlist.Add(("Apple", "ABCDED"));
    itemlist.Add(("Peach", "EFGHI"));
    itemlist.Add(("Apple", "ABCDED"));
    itemlist.Add(("Banana", "MNOPQ"));
    itemlist.Add(("Cherry", "PQRST"));
    itemlist.Add(("Peach", "EFGHI"));
    itemlist.Add(("Banana", "MNOPQ"));
    itemlist.Add(("Pear", "KLMAN"));
    itemlist.Add(("Apple", "ABCDED"));

    // 按Name和Description的组合分组
    var newlist = itemlist
        .GroupBy(i => new { i.Name, i.Description })
        .Select(group => new 
        { 
            group.Key.Name, 
            Count = group.Count(), 
            group.Key.Description 
        })
        .ToList();

    // 打印结果
    foreach (var item in newlist)
    {
        Debug.Print($"{item.Name} {item.Count} {item.Description}");
    }
}

输出结果(两种方式在示例数据下一致)

运行后会输出:

Apple 5 ABCDED
Pear 2 KLMAN
Peach 3 EFGHI
Banana 2 MNOPQ
Cherry 1 PQRST

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:42:04