LINQ c# Условие внутри сортировки

206
04 февраля 2019, 17:00

Сортирую список и нужно указать условие что-то вроде если "поле" == null, то сортируй по "поле2", если нет то сортируй по "поле". Как я понял конструкция ()?: в нутри Linq не работает. Вот мой набросок:

var sortList = dataList.OrderByDescending(s => s.Status.Value == Status.Yellow)
            .ThenByDescending(s => s.Status.Value == Status.Green)
            .ThenByDescending(s => s.Status.Value==Status.Grey|| s.Status.Value ==Status.White|| s.Status.Value == Status.Snow)
            .ThenByDescending(s=>s.DrStartOnSchedule)
            .ThenByDescending(s=>s.StartTn)
            .ThenByDescending(s => s.WaitingOnSchedule)
            .ThenBy(s=>(s.WaitingOnSchedule==Null)?s.Name:s.WaitingOnSchedule)
            .ToList<MonitorModel>();
        return sortList;
Answer 1

Реализуйте для вашего класса интерфейс IComparable<T>, метод которого и будет осуществлять нужную логику. В итоге при попытке сортировки через LINQ он будет использовать ваш метод

READ ALSO
Как правильно обработать строку?

Как правильно обработать строку?

Есть строка, которая может иметь следующий вид, числа в конце строки каждый раз разные:

209
Надо ли тестировать static?

Надо ли тестировать static?

И снова к вопросу, надо ли тестировать и использовать статические методыЧто-то эта тема опять всплыла: раз, два

202
html блок как переменная

html блок как переменная

Как правильно сохранить html блок и использовать его как переменную в других файлах? Задача автоматизировать добавление некоторых кусков...

280