2017-01-25 3 views
0
Id | Value 

1 50 
2 60 
3 80 
3 50 
2 20 
1 60 
1 100 

Я хотел был бы рассчитать используя linq запрос итог для каждого id. Я знаю, что я должен использовать group by заявление как же в SQL:group by and sum using linq

select id, sum(Value) 
from MyTable 
group by id 

, но как я могу добиться этого с помощью LINQ или лямбда?

+0

@ Я видел этот вопрос, но я действительно хочу простой и конкретный пример –

+2

вы не задавали простой и конкретный вопрос (например: C# code: List, DataSet, другой формат? и т. д.), поэтому трудно ответить должным образом. – nozzleman

+0

Итак, мой «маленький» стол с 2 колонками, для вас это не конкретный пример? Nice –

ответ

2
var list; 
// manipulate list from your table; 

list 
    .GroupBy(t=>t.Id) 
    .Select(t=>new { ID= t.Key , Value= t.Sum(u=>u.Value)}).ToList 
1

не проверял, но должно работать:

from entry in MyTable 
group entry by entry.Id into g 
select new { Id = g.Key, Sum = g.Sum(e => e.Value) }; 

Или, если вы предпочитаете метод формирования цепочки синтаксис:

MyTable.GroupBy(entry => entry.Id).Select(g => new { Id = g.Key, Sum = g.Sum(e => e.Value) }); 
+0

«группа» или запись группы? –

+0

@FlorinM. Да, правильный синтаксис - это «запись в группе по entry.Id в g' – Georg

0

Вы можете попробовать это

var results = from p in tables 
       group by p.Id into g 
       select new { Id = g.Key, Value = g.Sum(item=>item.Value) };