Linq Query avec SUM et ORDER BY
-
03-07-2019 - |
Question
J'ai une classe (C #) appelée Hit avec une propriété ItemID (int) et une propriété Score (int). Je passe le reste des détails pour rester bref. Maintenant, dans mon code, j'ai une énorme liste sur laquelle je dois faire la sélection suivante (dans une nouvelle liste): Je dois obtenir la somme de tous les Hit.Score pour chaque Hit.ItemID individuel, classé par Score. Donc, si j'ai les éléments suivants dans la liste d'origine
ItemID=3, Score=5
ItemID=1, Score=5
ItemID=2, Score=5
ItemID=3, Score=1
ItemID=1, Score=8
ItemID=2, Score=10
la liste résultante doit contenir les éléments suivants:
ItemID=2, Score=15
ItemID=1, Score=13
ItemID=3, Score=6
Quelqu'un peut-il aider?
La solution
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);
Autres conseils
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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow