2017-01-25 3 views
0
Id | Value 

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

Ich würde gerne mit LINQ Abfrage die Summe für jede ID berechnen. Ich weiß, ich habe die group by Aussage wie diese in SQL verwenden:Gruppe mit und Summe mit Linq

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

aber wie kann ich dies mit Linq oder Lambda erreichen?

+0

@ Düsenmann Ich habe diese Frage gesehen, aber ich möchte wirklich ein einfaches und konkretes Beispiel –

+2

Sie haben nicht als einfache und konkrete Frage gestellt (z. B. C# -Code: Liste, DataSet, anderes Format? usw.), so dass es schwierig ist, richtig zu antworten. – nozzleman

+0

Also, meine 'kleine' Tabelle mit 2 Spalten, für Sie ist es kein konkretes Beispiel? Nizza –

Antwort

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

nicht getestet, aber funktionieren sollte:

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

Oder, wenn Sie eine Methode Verkettungs Syntax bevorzugen:

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

"Gruppieren nach" oder Gruppeneingabe nach? –

+0

@FlorinM. Ja, die korrekte Syntax ist 'Gruppeneintrag nach Eintrag.Id in g' – Georg

0

Sie können versuchen, diese

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