Linq Query con SUMA y ORDENAR POR
-
03-07-2019 - |
Pregunta
Tengo una clase (C #) llamada Hit con un ItemID (int) y una propiedad Score (int). Me salto el resto de los detalles para que sea breve. Ahora, en mi código, tengo una enorme lista en la que debo hacer la siguiente selección (en una nueva lista): Necesito obtener la suma de todos los Hit.Score de cada Hit.ItemID individual, ordenado por puntuación. Así que si tengo los siguientes elementos en la lista original
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 lista resultante debe contener lo siguiente:
ItemID=2, Score=15
ItemID=1, Score=13
ItemID=3, Score=6
¿Puede alguien ayudar?
Solución
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);
Otros consejos
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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow