将List <object []>分组

Adm*_*eur 5 c# linq lambda

我有一个与昨天的问题类似的问题.
我有这个List <object []>

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

olst.Add(new object[] { "AA1", "X", 1, 3.50 });
olst.Add(new object[] { "AA2", "Y", 2, 5.20 });
olst.Add(new object[] { "AA2", "Y", 1, 3.50 });
olst.Add(new object[] { "AA1", "X", 1, 3.20 });
olst.Add(new object[] { "AA1", "Y", 2, 5.30 });
Run Code Online (Sandbox Code Playgroud)

我需要生成List <object []>来保存它:

"AA1", "X", 2, 6.70
"AA2", "Y", 3, 8.70
"AA1", "Y", 2, 5.30
Run Code Online (Sandbox Code Playgroud)

换句话说,我需要按每个对象[] 的第1第2个元素对olst进行分组,并将3第4个加起来.
我可以使用for循环,但我希望有人可以帮我使用lambda表达式和/或linq来实现这一点.

AD.*_*Net 6

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

            olst.Add(new object[] { "AA1", "X" });
            olst.Add(new object[] { "AA2", "Y" });
            olst.Add(new object[] { "AA2", "Y" });
            olst.Add(new object[] { "AA1", "X" });
            olst.Add(new object[] { "AA1", "Y" });

            var result = from ol in olst
                         group ol by new {p1 = ol[0], p2 = ol[1]}
                         into g
                         select g.First();
Run Code Online (Sandbox Code Playgroud)

像这样的东西?


And*_*ker 4

您需要按匿名类型进行分组,然后对第三列和第四列求和:

List<object[]> grouped = olst
    .GroupBy(o => new { Prop1 = o[0].ToString(), Prop2 = o[1].ToString() })
    .Select(o => new object[] 
    {
        o.Key.Prop1,
        o.Key.Prop2,
        o.Sum(x => (int)x[2]),
        o.Sum(x => (double)x[3])
    })
    .ToList();
Run Code Online (Sandbox Code Playgroud)