J'ai un tableau, "lasttraces", avec les champs suivants.
Id, AccountId, Version, DownloadNo, Date
Les données ressemblent à ceci:
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
Comment puis-je, dans LINQ to SQL , obtenir uniquement la dernière trace de chaque AccountId (celui avec la date la plus élevée)?
Si vous voulez juste la dernière date pour chaque compte, utilisez ceci:
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 vous voulez l'enregistrement complet:
var q = from n in table
group n by n.AccountId into g
select g.OrderByDescending(t=>t.Date).FirstOrDefault();
Voici un moyen simple de le faire
var lastPlayerControlCommand = this.ObjectContext.PlayerControlCommands
.Where(c => c.PlayerID == player.ID)
.OrderByDescending(t=>t.CreationTime)
.FirstOrDefault();
Jetez également un coup d’œil à cet endroit génial de LINQ - exemples LINQ to SQL
Si vous voulez tout l'enregistrement, voici une manière lambda:
var q = _context
.lasttraces
.GroupBy(s => s.AccountId)
.Select(s => s.OrderByDescending(x => x.Date).FirstOrDefault());
Cela pourrait être quelque chose comme:
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) };
Allez un moyen simple de faire ceci: -
Création d'une classe pour contenir les informations suivantes
Aller à la liste des sites stockés sur un objet ArrayList. Et exécuté requête suivante pour le trier dans l'ordre décroissant par niveau.
var query = from MyClass object in objCollection
orderby object.Level descending
select object
Une fois la collection triée par ordre décroissant, j’ai écrit le code suivant pour obtenir l’objet figurant dans la rangée du haut.
MyClass topObject = query.FirstRow<MyClass>()
Cela a fonctionné comme un charme.