Выбрать из IEnumerable с помощью Distinct / GroupBy и сортировки - возможно?

Допустим, у вас есть это:

class LogEntry
{
    int ID;
    int UserName;
    datetime TimeStamp;
    string Details;
}

, и вы извлекли такой набор данных:

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

Я хочу выбрать только последнюю отдельную запись (т. Е. Сортировать по убыванию отметки времени) для каждой пользователь (то есть GroupBy Username). Я могу разобраться в Distinct и GroupBy, но объединение их в одном операторе, который также возвращает неотличимые / сгруппированные поля / свойства И сортирует по метке времени, вызывает у меня головную боль.

Что должно получиться в приведенном выше примере. is:

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

Я не хочу «жульничать» и прибегать к длинному способу делать это, когда я уверен, что это можно сделать с помощью одного оператора LINQ.

11
задан Uwe Keim 20 December 2018 в 09:29
поделиться