集团总列表(Group and Sum a List<object[]>)

2019-08-04 09:13发布

我有这样的List<object[]>

List<object[]> olst = new List<object[]>();

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<object>持有这样的:

"AA1", 3
"AA2", 2

换句话说,我需要组OLST [X] [0]和总结OLST [X] [1]。
我可以用一个for循环,但我希望有人能使用lambda表达式和/或LINQ来做到这一点帮助我。

Answer 1:

使用GroupBySelect

List<object[]> 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();


Answer 2:

这将打开你列出到从第一值到第二值具有相同第一值之和的字典映射。

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

我错过了部分陈述的结果应该是类型的List<Object>含有Object[] 这将有助于如果downvoters会留下关于为什么评论。 ;)



文章来源: Group and Sum a List
标签: c# linq lambda