Вы можете использовать следующее.
var sorted = list.GroupBy(refund => refund.RefundStatus)
.OrderBy(x=>x.Key)
.SelectMany(
group => group.Key == 1 ?
group.OrderBy(p => p.SubmitTime)
: group.OrderByDescending(p => p.SubmitTime));
Полный пример.
var random = new Random();
var list = Enumerable.Range(1, 10)
.Select(x =>
new Refund
{
RefundStatus = random.Next(0,2),
SubmitTime = DateTime.Now.AddMinutes(x)
});
Где Возврат определяется как
public class Refund
{
public int RefundStatus { get; set; }
public DateTime SubmitTime { get; set; }
}
Пример вывода
** Перед сортировкой
Refund = 0 - SubmitTime = 22-03-2019 14:22:16
Refund = 1 - SubmitTime = 22-03-2019 14:23:16
Refund = 0 - SubmitTime = 22-03-2019 14:24:16
Refund = 0 - SubmitTime = 22-03-2019 14:25:16
Refund = 0 - SubmitTime = 22-03-2019 14:26:16
Refund = 1 - SubmitTime = 22-03-2019 14:27:16
Refund = 0 - SubmitTime = 22-03-2019 14:28:16
Refund = 1 - SubmitTime = 22-03-2019 14:29:16
Refund = 0 - SubmitTime = 22-03-2019 14:30:16
Refund = 1 - SubmitTime = 22-03-2019 14:31:16
После сортировки
Refund = 0 - SubmitTime = 22-03-2019 14:31:16
Refund = 0 - SubmitTime = 22-03-2019 14:29:16
Refund = 0 - SubmitTime = 22-03-2019 14:28:16
Refund = 0 - SubmitTime = 22-03-2019 14:26:16
Refund = 0 - SubmitTime = 22-03-2019 14:23:16
Refund = 1 - SubmitTime = 22-03-2019 14:22:16
Refund = 1 - SubmitTime = 22-03-2019 14:24:16
Refund = 1 - SubmitTime = 22-03-2019 14:25:16
Refund = 1 - SubmitTime = 22-03-2019 14:27:16
Refund = 1 - SubmitTime = 22-03-2019 14:30:16