对列表进行分组和求和

我有这个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来实现这一点。

使用GroupBySelect

 List newList = olst /* Group the list by the element at position 0 in each item */ .GroupBy(o => o[0].ToString()) /* Project the created grouping into a new object[]: */ .Select(i => new object[] { i.Key, i.Sum(x => (int)x[1]) }) .ToList(); 

这将使您将列表转换为字典映射,从第一个值映射到具有相同第一个值的第二个值的总和。

 var result = olst.GroupBy(entry => (String)entry[0]) .Select(group => new Object[] { group.Key, group.Sum(item => (Int32)item[1]) }) .ToList(); 

我错过了声明结果应该是包含Object[] List类型的部分。 如果贬低者会对原因发表评论,这将有所帮助。 ;)