¿Cómo obtengo la fila MAX con un GROUP BY en la consulta LINQ?

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 syntax de Group By .

  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) } 

Revisé la respuesta de DamienG en LinqPad. En lugar de

 g.Group.Max(s => s.uid) 

debiera ser

 g.Max(s => s.uid) 

¡Gracias!

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”