对列表进行分组和求和
我有这个List
List olst = new List(); olst.Add(new object[] { "AA1", 1 }); olst.Add(new object[] { "AA2", 1 }); olst.Add(new object[] { "AA2", 1 }); olst.Add(new object[] { "AA1", 1 }); olst.Add(new object[] { "AA1", 1 });
从olst
,我需要生成一个新的List
来保存它:
"AA1", 3 "AA2", 2
换句话说,我需要对olst [x] [0]进行分组并总结olst [x] [1] 。
我可以使用for循环,但我希望有人可以帮我使用lambda表达式和/或linq来实现这一点。
使用GroupBy
并Select
:
List
这将使您将列表转换为字典映射,从第一个值映射到具有相同第一个值的第二个值的总和。
var result = olst.GroupBy(entry => (String)entry[0]) .Select(group => new Object[] { group.Key, group.Sum(item => (Int32)item[1]) }) .ToList();
我错过了声明结果应该是包含Object[]
List
类型的部分。 如果贬低者会对原因发表评论,这将有所帮助。 ;)