Sélectionnez à partir de IEnumerable avec Distinct/GroupBy et tri — possible?
Dire que vous avez ceci:
class LogEntry
{
int ID;
int UserName;
datetime TimeStamp;
string Details;
}
et vous avez tiré un ensemble de données comme ceci:
ID Username Timestamp Details
1 foo 1/01/2010 Account created
2 zip 2/02/2010 Account created
3 bar 2/02/2010 Account created
4 sandwich 3/03/2010 Account created
5 bar 5/05/2010 Stole food
6 foo 5/05/2010 Can't find food
7 sandwich 8/08/2010 Donated food
8 sandwich 9/09/2010 Ate more food
9 foo 9/09/2010 Ate food
10 bar 11/11/2010 Can't find food
Ce que je veux faire est de sélectionner uniquement le dernier enregistrement unique (c'est à dire de Tri sur l'Horodatage Décroissant) pour chaque utilisateur (c'est à dire Grouper nom d'utilisateur). Je peux obtenir ma tête autour Distinctes et GroupBy, mais en les combinant dans un seul énoncé qui renvoie également à la non-distinct/groupées des champs/les propriétés ET les trie par date est de me donner un mal de tête.
Ce qui doit sortir avec l'exemple ci-dessus est:
ID Username Timestamp Details
2 zip 2/02/2010 Account created
8 sandwich 9/09/2010 Ate more food
9 foo 9/09/2010 Ate food
10 bar 11/11/2010 Can't find food
Je ne veux pas de "tricher" et de recourir à une action de longue haleine façon de le faire quand je suis confiant, il peut être réalisé en une seule LINQ déclaration.
- Comment voulez-vous le tri final être?
Vous devez vous connecter pour publier un commentaire.
J'espère que mon Linq-fu, c'est sur celui-ci: =)
Cet exemple de code à l'aide de vos données, et de la finale de la commande par ID, donne exactement le même résultat que votre exemple: (si vous n'avez pas l'esprit de l'brut de mise en forme!)
ID
à la fin.