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

使用Linq从查询结果中筛选分组后OCCURANCE最高的记录

修改方案

你可以在现有查询的基础上,按CODE1和SAMPLE两个字段分组,每个分组内仅保留OCCURANCE值最高的记录即可,完整代码如下:

var Output = (from s in  dt2.AsEnumerable()
              from c in  dt1.AsEnumerable()
              where Regex.IsMatch(s.Field<string>("CODE1"), c.Field<string>("CODE1")) &&
                    Regex.IsMatch(s.Field<string>("SAMPLE"), c.Field<string>("CODE2"))                                                           
              select new
              {
                  OCCURANCE = c.Field<int>("OCCURANCE"),
                  CODE1 = s.Field<string>("CODE1"),
                  SAMPLE = s.Field<string>("SAMPLE"),
              })
              // 追加分组取最大值逻辑
              .GroupBy(x => new { x.CODE1, x.SAMPLE })
              .Select(g => g.OrderByDescending(x => x.OCCURANCE).First());

逻辑说明

  • GroupBy语句以CODE1和SAMPLE组合作为分组键,把重复的同编码同样本的记录归到同一个分组里
  • 每个分组内按OCCURANCE倒序排序,取第一条就是该分组下出现次数最高的记录,即可过滤掉低频次的重复数据。

如果存在同一个CODE1+SAMPLE组合有多个相同最高OCCURANCE的记录需要全部保留,可以把最后一行的Select逻辑替换为:

.SelectMany(g => g.Where(x => x.OCCURANCE == g.Max(y => y.OCCURANCE)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:39:03