C# 使用GroupBy查询分组内ID重复且Name非空数据出错如何解决
错误原因
你当前的查询逻辑只判断了整个Group分组的总条数大于1,没有对Group内的ID做重复校验,所以GroupB里只出现1次的id=4的记录也被一并返回了。
修正方案
先过滤Name不为空的记录,再按Group + id作为联合键分组,筛选出分组内条数大于1的组,最后展开所有符合条件的分组元素即可,修正后的代码如下:
var query1 = group .Where(s => s.Name != "") .GroupBy(x => new {x.Group, x.id}) // 按分组+ID联合分组,统计同一个分组内相同ID的出现次数 .Where(g => g.Count() > 1) // 只保留出现次数大于1的分组 .SelectMany(y => y) .ToList(); Console.WriteLine("output\n" + string.Join("\n", query1));
运行后输出就会符合你的预期,仅返回GroupB内出现2次的id=5的两条记录。
内容的提问来源于stack exchange,提问作者Syntax_MM
相关产品推荐
相关产品推荐

