Допустим, у меня есть список объектов:
var items = new {
new { Order = 0 },
new { Order = 1 },
new { Order = -1 },
new { Order = 3 },
new { Order = 2 },
new { Order = -1 }
};
Мне нужно сделать так, чтобы элементы с Order > -1
были в верхней части списка, упорядоченного по возрастанию, а остальные элементы с Order == -1
следовали за ними.
Есть ли более элегантный способ сделать это, чем использовать предложения Conact()
и Where()
:
var orderedItems = items.Where(x => x.Order > -1).OrderBy(x => x.Order)
.Conact(items.Where(x => x.Order == -1);
Чтобы после сортировки этот список выглядел так:
var items = new {
new { Order = 0 },
new { Order = 1 },
new { Order = 2 },
new { Order = 3 },
new { Order = -1 },
new { Order = -1 }
};
Также items
список в реальном сценарии уже является сложным IQueryable<T>
объектом. Вот почему я пытаюсь найти наиболее оптимальный способ сделать такой выборочный порядок.