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?
InformationsquelleAutor nathanchere | 2010-10-19