.net - ejemplo - linq sum
¿Cómo obtengo la fila MAX con un GROUP BY en la consulta LINQ? (5)
Estoy buscando un camino en LINQ para que coincida con la siguiente consulta SQL.
Select max(uid) as uid, Serial_Number from Table Group BY Serial_Number
Realmente buscando algo de ayuda en este caso. La consulta anterior obtiene el máximo uso de cada número de serie debido a la sintaxis de Group By
.
En forma de cadena de métodos:
db.Serials.GroupBy(i => i.Serial_Number).Select(g => new
{
Serial_Number = g.Key,
uid = g.Max(row => row.uid)
});
Las respuestas son correctas si solo requiere esos dos campos, pero para un objeto más complejo, tal vez este enfoque podría ser útil:
from x in db.Serials
group x by x.Serial_Number into g
orderby g.Key
select g.OrderByDescending(z => z.uid)
.FirstOrDefault()
... esto evitará el "seleccionar nuevo"
Revisé la respuesta de DamienG en LinqPad. En lugar de
g.Group.Max(s => s.uid)
debiera ser
g.Max(s => s.uid)
¡Gracias!
using (DataContext dc = new DataContext())
{
var q = from t in dc.TableTests
group t by t.SerialNumber
into g
select new
{
SerialNumber = g.Key,
uid = (from t2 in g select t2.uid).Max()
};
}
var q = from s in db.Serials
group s by s.Serial_Number into g
select new {Serial_Number = g.Key, MaxUid = g.Max(s => s.uid) }