Este team de expertos luego de algunos días de investigación y de recopilar de datos, hemos dado con la solución, queremos que todo este artículo sea de utilidad en tu trabajo.
Solución:
Me pregunto si algo como:
var custsLastAccess = db.CustAccesses
.Where(c.AccessReason.Length>0)
.GroupBy(c => c.CustID)
.Select(grp => new
grp.Key,
LastAccess = grp
.OrderByDescending(x => x.AccessDate)
.Select(x => x.AccessDate)
.FirstOrDefault()
).ToList();
también podrías intentar OrderBy()
y Last()
Usando la sintaxis LINQ, que creo que se ve más limpia:
var custsLastAccess = from c in db.CustAccesses
group c by c.CustID into grp
select grp.OrderByDescending(c => c.AccessDate).FirstOrDefault();
Aquí: esto usa max en lugar de OrderByDesc, por lo que debería ser más eficiente.
var subquery = from c in CustAccesses
group c by c.CustID into g
select new
CustID = g.Key,
AccessDate = g.Max(a => a.AccessDate)
;
var query = from c in CustAccesses
join s in subquery
on c.CustID equals s.CustID
where c.AccessDate == s.AccessDate
&& !string.IsNullOrEmpty(c.AccessReason)
select c;
Si haces scroll puedes encontrar las anotaciones de otros creadores, tú igualmente tienes la habilidad dejar el tuyo si lo crees conveniente.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)