Order,group和sum ExpandoObject中的数组列表c#

时间:2017-10-19 13:22:28

标签: c# linq dictionary expandoobject

我试图总结" col3"通过排序和分组" col1"和" col2"使用C#Linq。

{{1}}

我正在尝试将输出作为

  

新val 1

     
      
  • New val 2
  •   
  • New val 3
  •   
  

总计 - 30

1 个答案:

答案 0 :(得分:0)

创建ExpandoObject的原因是什么,但是像字典一样使用它?如果您知道属性集(col1,col2,col3),最好为它创建单独的类,否则可以这样做。

var list = new List<dynamic>();
dynamic e1 = new ExpandoObject();
e1.col1 = "New val 1";
e1.col2 = "New val 2";
e1.col3 = 20;
list.Add(e1);

dynamic e2 = new ExpandoObject();
e2.col1 = "New val 1";
e2.col2 = "New val 3";
e2.col3 = 10;
list.Add(e2);

foreach (var group in list
    .OrderBy(e => e.col1)
    .GroupBy(o => o.col1))
{
    Debug.WriteLine((string)group.Key);
    var sum = 0;
    foreach (var item in group)
    {
        Debug.WriteLine("    " + (string)item.col2);
        sum += item.col3;
    }

    Debug.WriteLine("Total: " + sum);
}