LINQ汇总行

时间:2012-03-08 09:07:31

标签: c# asp.net asp.net-mvc linq

我有这样的表:

title row1 row2
'p1'  3    4
'p2'  23   43
'p3'  21   23

我想在此表中添加其他摘要行:

title   row1  row2
'p1'    3     4
'p2'    23    43
'p3'    21    23
'total' 47    70

如何用LINQ以简单的方式做到这一点?我有很多列,所以查询:

Row r = new Row();
r.row1 = list.Sum(x=>x.row1);
r.row2 = list.Sum(x=>x.row2);

不是好主意(在我看来)......

2 个答案:

答案 0 :(得分:3)

您可以将它组合成一个LINQ查询,如下所示:

var result = row
.Select(r => r)
.Union(new Row[]
    {
       new Row
           {
               Title = "total",
               Row1 = row.Sum(r => r.Row1),
               Row2 = row.Sum(r => r.Row2)
           },
    });

但最终你还是单独对行进行求和。我想不出办法解决这个问题。

答案 1 :(得分:1)

我看不出明显改善你的建议的方法

var total = new List<Row>{new Row{
        title="total", 
        row1=rows.Sum(r1=>r1.row1), 
        row2=rows.Sum(r2=>r2.row2)
    }};

var q = rows.Concat(total);