c# - 创建一个包含常见元素和重复计数的列表
问题描述
我有来自 4 个不同的 datagridview 的 4 个 var,我通过这样的 Linq 查询获得了一系列值:
var Sums = dataGridView1.Rows.Cast<DataGridViewRow>()
.Where(row => row.Cells[7].Value != null)
.GroupBy(row => row.Cells[7].Value.ToString()) //inserire colonna gruppo
.Select(g => new { Gruppo = g.Key, Serie = g.Sum(row => Convert.ToInt32(row.Cells[1].Value)) });
所以每个 var 看起来都类似于:
Gruppo | Serie
group1 | 3
group2 | 2
group3 | 7
我想要做的是获得一个列表,其中包含多个列表的交集和每个“Gruppo”元素的重复计数。
结果必须是这样的:
Gruppo | Repetition
group1 | 2 (if is present in two lists)
group2 | 3 (if is present in three lists)
group3 | 1 (if is present in one lists)
现在我有了这段代码的共同元素:
var pp = Sums.Intersect(Sums2);
但只找到具有相同“Gruppo”和相同“Serie”的元素,所以如果“gruppo”它相等但 serie 不是,则相交不起作用。
实现这一目标的最佳方法是什么?
解决方案
将它们放在一起并GroupBy
再次使用这两个属性:
var gruppoRepetitions = Sums.Concat(Sums2).Concat(Sums3)
.GroupBy(s => new{ s.Gruppo, s.Serie })
.Select(g => new{ Gruppo = g.Key.Gruppo, Repetition = g.Count() });
推荐阅读
- reactjs - 如何在 react-navigation v5 中同时渲染 Tab 导航和抽屉导航
- javascript - p表中的默认排序列和排序图标
- c# - 在剃刀页面中初始化类型化数组的数组
- docker - Docker Compose 如何在服务版本升级时重新创建容器?
- ios - 已发布的应用程序在安装数小时后崩溃
- django - Django 基于类的视图返回视图或重定向到另一个页面
- c# - 互操作字 - 将合并域插入到范围的末尾
- ios - SwiftUI:在动态列表顶部添加视图会导致视图缩小
- python - 无法使用 selenium python 在谷歌驱动器预览模式下定位元素
- swift - 在 SwiftUI 中使用 Tab Bar 弹出到根视图