81 Stimmen

Unter Verwendung von GroupBy, Count und Sum in LINQ Lambda-Ausdrücken

Ich habe eine Sammlung von Boxen mit den Eigenschaften Gewicht, Volumen und Besitzer.

Ich möchte LINQ verwenden, um eine zusammengefasste Liste (nach Besitzer) der Boxeninformationen zu erhalten.

z.B.

**Besitzer, Boxen, Gesamtgewicht, Gesamtvolumen**  
Jim,     5,     1430.00,      3.65  
George,  2,     37.50,        1.22

Kann mir jemand zeigen, wie man dies mit Lambda-Ausdrücken macht?

165voto

bodee Punkte 2614
    var ListByOwner = list.GroupBy(l => l.Owner)
                          .Select(lg => 
                                new { 
                                    Owner = lg.Key, 
                                    Boxes = lg.Count(),
                                    TotalWeight = lg.Sum(w => w.Weight), 
                                    TotalVolume = lg.Sum(w => w.Volume) 
                                });

Bitte lassen Sie den vorherigen Text unverändert.

16voto

jeroenh Punkte 25392
        var q = from b in listOfBoxes
                group b by b.Owner into g
                select new
                           {
                               Owner = g.Key,
                               Boxes = g.Count(),
                               TotalWeight = g.Sum(item => item.Weight),
                               TotalVolume = g.Sum(item => item.Volume)
                           };

9voto

Ronald Wildenberg Punkte 30961
var boxSummary = from b in boxes
                group b by b.Owner into g
                let nrBoxes = g.Count()
                let totalWeight = g.Sum(w => w.Weight)
                let totalVolume = g.Sum(v => v.Volume)
                select new { Owner = g.Key, Boxes = nrBoxes,
                             TotalWeight = totalWeight,
                             TotalVolume = totalVolume }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X