c# - Concat 多个 linq 查询的结果并将重复的值相加
问题描述
我有这个函数,我调用 datagridview 内容更改和工作。
这是从另一列获取具有值的名称列表,并将结果显示在另一个 dgv 中。
例子:
group | quantity
chest | 2
back | 5
legs | 7
问题是,当我在多行或 dgv 中有相同的组时,我在结果 datagridview 中获得了多个条目。我想要做的是在两次输入同一组时对值求和。
所以在这种情况下:
group | quantity
legs | 2
arms | 5
legs | 7
会改变:
group | quantity
legs | 9
arms | 5
我尝试过 union 而不是 concat 但这会删除重复项,所以如果我有 2 个具有相同值的条目,我会丢失重复值。
这里完整的功能代码:
private void seriesettimanali()
{
// quantity for group of datagridview1
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 { Group = g.Key, Sum = g.Sum(row => Convert.ToInt32(row.Cells[1].Value)) });
// quantity for group of datagridview2
var Sums2 = dataGridView2.Rows.Cast<DataGridViewRow>()
.Where(row => row.Cells[7].Value != null)
.GroupBy(row => row.Cells[7].Value.ToString())
.Select(g => new { Group = g.Key, Sum = g.Sum(row => Convert.ToInt32(row.Cells[1].Value)) });
// quantity for group of datagridview3
var Sums3 = dataGridView3.Rows.Cast<DataGridViewRow>()
.Where(row => row.Cells[7].Value != null)
.GroupBy(row => row.Cells[7].Value.ToString())
.Select(g => new { Group = g.Key, Sum = g.Sum(row => Convert.ToInt32(row.Cells[1].Value)) });
// quantity for group of datagridview4
var Sums4 = dataGridView4.Rows.Cast<DataGridViewRow>()
.Where(row => row.Cells[7].Value != null)
.GroupBy(row => row.Cells[7].Value.ToString())
.Select(g => new { Group = g.Key, Sum = g.Sum(row => Convert.ToInt32(row.Cells[1].Value)) });
// quantity for group of datagridview5
var Sums5 = dataGridView5.Rows.Cast<DataGridViewRow>()
.Where(row => row.Cells[7].Value != null)
.GroupBy(row => row.Cells[7].Value.ToString())
.Select(g => new { Group = g.Key, Sum = g.Sum(row => Convert.ToInt32(row.Cells[1].Value)) });
var resultSum1 = Sums.Concat(Sums2);
var resultSum2 = resultSum1.Concat(Sums3);
var resultSum3 = resultSum2.Concat(Sums4);
var resultSum4 = resultSum3.Concat(Sums5);
dataGridView6.DataSource = resultSum4.ToList();
}
我能怎么做?
解决方案
好的,我找到了解决方案:
var rs = resultSum4
.GroupBy(w => w.User)
.Select(g => new { User = g.Key, Sum = g.Sum(x => x.Sum) });
推荐阅读
- jsf - 键入时更新 p:inputText 样式
- c# - .Net 和 dotnet Core 之间的 GZipCompress 差异
- javascript - 元素名称中的点是什么意思?
- javascript - 如何跟踪所有用户对 Jira 网站按钮的点击次数
- javascript - 在打字稿中交换多维数组中的元素
- jupyter-notebook - 将虚拟环境添加到 conda 后,无法打开打开的 jupyter 笔记本。为什么?
- ios - Unity iOS 构建失败:Xcode 中语音识别的重复符号
- solr - Hue Solr 标记图限制为 25
- javascript - 为什么“this.checked”有效但“$(”#acept").checked”无效?
- r-markdown - 有谁知道 RMarkdown 是否可以调整 PowerPoint 输出的字体颜色?