Mi ejemplo particular es bastante complejo, pero creo que el concepto se aplicaría igualmente a algo así como un sistema de registro, por lo que lo usaré para facilitar la explicación. Es un ejemplo ficticio, por favor no insistir en o agonizan por lo que es achitectually, mediante programación o moralmente malo con el ejemplo propio :)LINQ: Seleccione de IEnumerable con Distinct/GroupBy y clasificación - posible?
Digamos que tiene esto:
class LogEntry
{
int ID;
int UserName;
datetime TimeStamp;
string Details;
}
y que se han retirado un conjunto de los datos como este:
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
lo que quiero hacer es seleccionar sólo el último registro único (es decir, en la marca de hora Ordenar Descendente) para cada usuario (es decir GroupBy nombre de usuario). Puedo entender Distinct, y en menor medida GroupBy, pero combinar todos estos en una declaración única que también devuelve los campos/propiedades no diferenciadas/agrupadas Y clasifica por timestamp me está dando dolor de cabeza.
Lo que debería salir con el ejemplo anterior es:
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
no quiero a 'engañar' y recurrir a una forma de largo aliento de hacerlo cuando el rendimiento no es crítico aquí y yo Estoy moderadamente seguro de que se puede hacer en una sola declaración LINQ.
¿Cómo quieres que sea el último tipo? – Will