我有一个IList<Row>
,其中Row
包含细胞IList<Cell>
列表。这些细胞有ToString
,ToDouble
等。
我想遍历此行列表并检查cell[index]
是否存在具有相同值的行。让我们说小区3。
如果存在具有相同值的行,我应该将这些行合并为一行。可以肯定的是,所有单元格 - 在相同键的情况下 - 除了具有金额的单元格之外相同,假设这是单元格4.所以这应该合并(因此1删除)与唯一的区别在于值是两者的总和。
我试图创建一个Dictionary<string, double>
。我循环遍历所有行,检查map是否包含键,如果不是 - > merge(也使用扩展方法Merge,但同样的想法)。
在此循环之后,我创建了一个新列表,将字典放在那里并循环显示其他信息的旧列表。
好吧,我认为我的方式太长了,应该有一种方法可以更容易地做到这一点,也许是LINQ或者其他任何方式。有什么想法如何正确地做到这一点?或者你们认为我的做法并不那么糟糕?
尝试:
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())) }
}
});