Il mio esempio particolare è piuttosto complesso ma penso che il concetto si applicherebbe ugualmente a qualcosa come un sistema di registrazione, quindi lo userò per facilitare la spiegazione. E 'un esempio fittizio, si prega di non arpa o agonizzare su ciò che è achitectually, programmaticamente o moralmente sbagliato con l'esempio stesso :)LINQ: Seleziona da IEnumerable con Distinct/GroupBy e ordinamento - possibile?
Diciamo che avete questo:
class LogEntry
{
int ID;
int UserName;
datetime TimeStamp;
string Details;
}
e si è tirato un set dei dati di questo tipo:
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
Quello che voglio fare è selezionare solo l'ultimo singolo record (cioè Ordina su TimeStamp Discendente) per ogni utente (ad esempio GroupBy Nome utente). Posso capire meglio Distinct, e in misura minore GroupBy, ma combinare tutti questi elementi in una singola istruzione che restituisce anche i campi/proprietà non differenziati/raggruppati e le ordinanze per data e ora mi dà fastidio.
Cosa dovrebbe uscire con l'esempio sopra è:
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
Non voglio a 'imbrogliare' e ricorrere a un modo prolisso di farlo quando le prestazioni non è critico qui e mi Sono moderatamente fiducioso che può essere fatto in una singola istruzione LINQ.
Come si desidera che l'ordinamento finale sia? – Will