在列表中合并的最佳方式,其中对象包含值列表

问题描述 投票:-1回答:1

我有一个IList<Row>,其中Row包含细胞IList<Cell>列表。这些细胞有ToStringToDouble等。

我想遍历此行列表并检查cell[index]是否存在具有相同值的行。让我们说小区3。 如果存在具有相同值的行,我应该将这些行合并为一行。可以肯定的是,所有单元格 - 在相同键的情况下 - 除了具有金额的单元格之外相同,假设这是单元格4.所以这应该合并(因此1删除)与唯一的区别在于值是两者的总和。

我试图创建一个Dictionary<string, double>。我循环遍历所有行,检查map是否包含键,如果不是 - > merge(也使用扩展方法Merge,但同样的想法)。 在此循环之后,我创建了一个新列表,将字典放在那里并循环显示其他信息的旧列表。

好吧,我认为我的方式太长了,应该有一种方法可以更容易地做到这一点,也许是LINQ或者其他任何方式。有什么想法如何正确地做到这一点?或者你们认为我的做法并不那么糟糕?

c# list linq generic-list
1个回答
0
投票

尝试:

var mergedRows = rows.GroupBy(x => x.Cells[0].Value.ToString())
            .Select(x => new Row() { Cells = new List<Cell>
                                                {
                                                   new Cell() { Value = x.Key },
                                                   new Cell() { Value = x.Sum(y => int.Parse(y.Cells[1].Value.ToString())) }
                                                }
                                   });
© www.soinside.com 2019 - 2024. All rights reserved.