Cómo seleccionar solo los registros con la fecha más alta en LINQ

Tengo una tabla, ‘lasttraces’, con los siguientes campos.

Id, AccountId, Version, DownloadNo, Date 

Los datos se ven así:

 28092|15240000|1.0.7.1782|2009040004731|2009-01-20 13:10:22.000 28094|61615000|1.0.7.1782|2009040007696|2009-01-20 13:11:38.000 28095|95317000|1.0.7.1782|2009040007695|2009-01-20 13:10:18.000 28101|15240000|1.0.7.1782|2009040004740|2009-01-20 14:10:22.000 28103|61615000|1.0.7.1782|2009040007690|2009-01-20 14:11:38.000 28104|95317000|1.0.7.1782|2009040007710|2009-01-20 14:10:18.000 

¿Cómo puedo, en LINQ to SQL , obtener solo la última última ruta de cada AccountId (la que tiene la fecha más alta)?

Si solo quiere la última fecha para cada cuenta, debería usar esto:

 var q = from n in table group n by n.AccountId into g select new {AccountId = g.Key, Date = g.Max(t=>t.Date)}; 

Si quieres el registro completo:

 var q = from n in table group n by n.AccountId into g select g.OrderByDescending(t=>t.Date).FirstOrDefault(); 

Aquí hay una manera simple de hacerlo

 var lastPlayerControlCommand = this.ObjectContext.PlayerControlCommands .Where(c => c.PlayerID == player.ID) .OrderByDescending(t=>t.CreationTime) .FirstOrDefault(); 

También eche un vistazo a este gran lugar LINQ – Ejemplos de LINQ a SQL

Si quieres el registro completo, aquí hay una forma lambda:

 var q = _context .lasttraces .GroupBy(s => s.AccountId) .Select(s => s.OrderByDescending(x => x.Date).FirstOrDefault()); 

Podría ser algo así como:

 var qry = from t in db.Lasttraces group t by t.AccountId into g orderby t.Date select new { g.AccountId, Date = g.Max(e => e.Date) }; 

Vaya una manera simple de hacer esto: –

Creó una clase para contener la siguiente información

  • Nivel (número)
  • Url (URL del sitio)

Vaya a la lista de sitios almacenados en un objeto ArrayList. Y se ejecuta la siguiente consulta para ordenarlo en orden descendente por nivel.

 var query = from MyClass object in objCollection orderby object.Level descending select object 

Una vez que obtuve la colección ordenada en orden descendente, escribí el siguiente código para obtener el objeto que se encuentra en la fila superior

 MyClass topObject = query.FirstRow() 

Esto funcionó como el encanto.