Ответ 1
Как насчет:
estate.Images.OrderByDescending(est => est.IsProfile).ToList()
Это упорядочивает изображения в порядке убывания по свойству IsProfile и затем создает новый список из результата.
У меня есть общий набор типов MyImageClass, а MyImageClass имеет логическое свойство IsProfile. Я хочу отсортировать этот общий список, который IsProfile == true стоит в начале списка.
Я пробовал это.
rptBigImages.DataSource = estate.Images.OrderBy(est=>est.IsProfile).ToList();
с кодом выше изображения стоит последний, что свойство IsProfile имеет значение true. Но я хочу, чтобы он был в первом индексе. Мне нужно что-то Asc или Desc. Тогда я сделал это.
rptBigImages.DataSource = estate.Images.OrderBy(est=>est.IsProfile).Reverse.ToList();
Есть ли более простой способ сделать это?
Спасибо
Как насчет:
estate.Images.OrderByDescending(est => est.IsProfile).ToList()
Это упорядочивает изображения в порядке убывания по свойству IsProfile и затем создает новый список из результата.
Вы можете использовать .OrderByDescending(...) - но обратите внимание, что с помощью методов LINQ вы создаете новый упорядоченный список, не заказывая существующий список.
Если у вас есть List<T>
и вы хотите переупорядочить список существующий, то вы можете использовать Sort()
- и вы можете сделать это проще, добавив несколько методов расширения:
static void Sort<TSource, TValue>(this List<TSource> source,
Func<TSource, TValue> selector) {
var comparer = Comparer<TValue>.Default;
source.Sort((x,y)=>comparer.Compare(selector(x),selector(y)));
}
static void SortDescending<TSource, TValue>(this List<TSource> source,
Func<TSource, TValue> selector) {
var comparer = Comparer<TValue>.Default;
source.Sort((x,y)=>comparer.Compare(selector(y),selector(x)));
}
Затем вы можете использовать list.Sort(x=>x.SomeProperty)
и list.SortDescending(x=>x.SomeProperty)
.