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

如何用LINQ按Key分组统计不同Value的出现次数?

解决按Code分组统计不同Value出现次数的LINQ实现

实现思路

要满足Key(code)> 不同Value > 出现次数的统计规则,需要进行两级分组:

  1. 第一级按code对所有ObjectPart元素分组
  2. 第二级在每个code分组内,再按value分组并统计该value的出现次数

完整代码示例

首先确认ObjectPart类的定义(你已具备该类):

public class ObjectPart
{
    public string code { get; set; }
    public int value { get; set; }
}

获取数据源并执行统计:

// 获取所有差异数据
var allDiffs = getAllDiffs();

// 执行分组统计
var stats = allDiffs
    .GroupBy(part => part.code)
    .Select(codeGroup => new
    {
        Code = codeGroup.Key,
        ValueOccurrences = codeGroup
            .GroupBy(part => part.value)
            .Select(valueGroup => new
            {
                Value = valueGroup.Key,
                Count = valueGroup.Count()
            })
            .ToList()
    })
    .ToList();

示例说明

假设getAllDiffs()返回以下数据:

code: "A", value: 1
code: "A", value: 1
code: "A", value: 2
code: "B", value: 3
code: "B", value: 3
code: "B", value: 4

最终stats的结构为:

  • Code: "A"
    • Value: 1, Count: 2
    • Value: 2, Count: 1
  • Code: "B"
    • Value: 3, Count: 2
    • Value: 4, Count: 1

错误原因分析

你之前的代码可能仅在一级分组后统计了不同value的数量(例如codeGroup.Select(p => p.value).Distinct().Count()),这种方式只能得到每个code下有多少种不同的value,无法获取单个value的出现次数。通过两级分组才能精准统计每个value的重复次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:35:22