Сводная строка с LINQ - PullRequest
1 голос
/ 08 марта 2012

У меня есть такая таблица:

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 ]

3 голосов
/ 08 марта 2012

Вы можете объединить его в один запрос 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 голос
/ 08 марта 2012

Я не вижу очевидного способа улучшить то, что вы предлагаете

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...