Frage

Ich habe eine (C #) Klasse mit einem ItemID (int) und einem Score (int) Eigenschaft Hit genannt. Ich überspringe den Rest der Details sich kurz zu halten. Jetzt in meinem Code, ich habe eine riesige Liste, auf die ich brauche die folgende Auswahl zu tun (in eine neue Liste): Ich brauche die Summe aller Hit.Score die für jeden einzelnen Hit.ItemID zu bekommen, von Score bestellt. Also, wenn ich die folgenden Elemente in der ursprünglichen Liste

ItemID=3, Score=5
ItemID=1, Score=5
ItemID=2, Score=5
ItemID=3, Score=1
ItemID=1, Score=8
ItemID=2, Score=10

Die resultierende Liste sollte folgende Angaben enthalten:

ItemID=2, Score=15
ItemID=1, Score=13
ItemID=3, Score=6

Kann jemand helfen?

War es hilfreich?

Lösung

var q = (from h in hits
    group h by new { h.ItemID } into hh
    select new {
        hh.Key.ItemID,
        Score = hh.Sum(s => s.Score)
    }).OrderByDescending(i => i.Score);

Andere Tipps

IEnumerable<Hit> result = hits.
   GroupBy(hit => hit.ItemID).
   Select(group => new Hit 
                   {
                      ItemID = group.Key,
                      Score = group.Sum(hit => hit.Score)
                   }).
   OrderByDescending(hit => hit.Score);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top