Сортировать список <Дата и время> по убыванию
В C# (3.0 или 3.5, поэтому мы можем использовать 9X_c# лямбды), есть ли элегантный способ сортировки 9X_lambda-functions списка дат в порядке убывания? Я знаю, что 9X_sort могу выполнить прямую сортировку, а затем 9X_sorted все наоборот,
docs.Sort((x, y) => x.StoredDate.CompareTo(y.StoredDate));
docs.Reverse();
но есть ли лямбда-выражение, которое 9X_generic-lambda сделает это за один шаг?
В приведенном выше 9X_sort примере StoredDate - это свойство, типизированное 9X_array-sorting как DateTime.
Ответ #1
Ответ на вопрос: Сортировать список <Дата и время> по убыванию
Хотя это не проверено ...
docs.Sort((x, y) => y.StoredDate.CompareTo(x.StoredDate));
должно быть противоположным 9X_lambda тому, что было у вас изначально.
Ответ #2
Ответ на вопрос: Сортировать список <Дата и время> по убыванию
Что не так:
docs.OrderByDescending(d => d.StoredDate);
9X_csharp
- Обратите внимание, что это создает новый упорядоченный список, а не изменяет список на м ...
Ответ #3
Ответ на вопрос: Сортировать список <Дата и время> по убыванию
docs.Sort((x, y) => y.StoredDate.CompareTo(x.StoredDate));
Должен делать то, что вы ищете.
9X_lambda-functions
Ответ #4
Ответ на вопрос: Сортировать список <Дата и время> по убыванию
docs.Sort((x, y) => -x.StoredDate.CompareTo(y.StoredDate));
Обратите внимание на знак минус.
9X_lambda
-
9
-
2
-
2
-
4
-
3
-
10
-
3
-
2
-
3
-
1
-
1
-
3
-
2
-
1
-
1
-
3
-
14
-
4
-
14
-
12
-
8
-
4
-
4
-
4
-
5
-
3
-
6
-
4
-
9
-
4
-
7
-
7
-
4
-
22
-
4
-
9
-
11
-
4
-
3
-
8
-
11
-
5
-
6
-
4
-
5
-
10
-
2
-
6
-
4
-
16