In C # Problem Wert Gruppierung und dann Summieren

stimmen
0

Ich versuche, die Kosten für eine Reihe von Gegenständen durch eine Person, die Organisation gruppiert zu summieren. Ich glaube, dass die Summe richtig funktioniert, aber ich bin nicht meine Gruppierung zu sehen. Die Objekte in Rollup gespeichert enthalten nur den Wert der Summe. Ich würde erwarten, dass sie für diese Organisation die Organisation zusätzlich zu der Summe der Kosten haben. Was habe ich in diesem Ausdruck verpasst?

var rollup = OrgPersonList.GroupBy(
    person => person.Person.Org).Select(group =>
        group.Sum(price => price.Items.Sum(item =>
            item.Cost)));
Veröffentlicht am 14/01/2010 um 18:32
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Nun , Sie sind nur die Auswahl der Summe - wenn Sie den Schlüssel als auch wollen, sollten Sie die Auswahl. Beispielsweise:

var rollup = OrgPersonList.GroupBy(x => x.Person.Org)
    .Select(group => new { group.Key,
                           Sum =group.Sum(x => x.Items.Sum(item => item.Cost))});

Beachten Sie, dass ich verwendet habe , xnicht personoder , pricewie es scheint das gleiche Element sowohl verkapselt.

Oder als Abfrageausdruck:

var rollup = from x in OrgPersonList
             group x by x.Person.Org into grouped
             select new { grouped.Key,
                          Sum =grouped.Sum(x => x.Items.Sum(item =>item.Cost))});

(Leer etwas eng für die Formatierung ...)

Wiederum alternativ die Gruppe ... durch könnte die Summe für jeden Eintrag berechnen, so dass nur das Ergebnis die Summe der Einträge in der Gruppe sein muss:

var rollup = from x in OrgPersonList
             group x.Items.Sum(item => item.Cost) by x.Person.Org into grouped
             select new { grouped.Key, Sum = grouped.Sum() }); 
Beantwortet am 14/01/2010 um 18:43
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more