Estoy usando LINQ en un IQueryable devuelto por NHibernate y necesito seleccionar la fila con los valores máximos en un par de campos.
He simplificado la parte en la que me quedo. Necesito seleccionar la fila de mi tabla con el valor máximo en un campo.
var table = new Table { new Row(id: 1, status: 10), new Row(id: 2, status: 20) }
from u in table
group u by 1 into g
where u.Status == g.Max(u => u.Status)
select u
Esto es incorrecto pero no puedo encontrar la forma correcta.
Por cierto, lo que en realidad estoy tratando de lograr es aproximadamente esto:
var clientAddress = this.repository.GetAll()
.GroupBy(a => a)
.SelectMany(
g =>
g.Where(
a =>
a.Reference == clientReference &&
a.Status == ClientStatus.Live &&
a.AddressReference == g.Max(x => x.AddressReference) &&
a.StartDate == g.Max(x => x.StartDate)))
.SingleOrDefault();
Comencé con la lambda anterior, pero he estado usando LINQPad para intentar resolver la sintaxis para seleccionar Max ().
ACTUALIZAR
Eliminar el GroupBy fue clave.
var all = this.repository.GetAll();
var address = all
.Where(
a =>
a.Reference == clientReference &&
a.Status == ClientStatus.Live &&
a.StartDate == all.Max(x => x.StartDate) &&
a.AddressReference == all.Max(x => x.AddressReference))
.SingleOrDefault();