Как использовать orderby с 2 полями в linq? [дубликат]
этот вопрос уже есть ответ здесь:
- Несколько "order by" в LINQ 7 ответов
скажем, у меня есть эти значения в таблице базы данных
id = 1
StartDate = 1/3/2010
EndDate = 1/3/2010
id = 2
StartDate = 1/3/2010
EndDate = 1/9/2010
теперь у меня есть до сих пор этот orderby для моего linq
var hold = MyList.OrderBy(x => x.StartDate).ToList();
Я хочу заказать его, но также с помощью окончания.
вроде Так порядок я бы хочу это в качестве
id 2
id 1
так endDates
которые больше идут первыми. Я не уверен, что мне нужно изменить это, чтобы использовать какую-то функцию сравнения или что-то еще.
5 ответов:
использовать
ThenByDescending
:var hold = MyList.OrderBy(x => x.StartDate) .ThenByDescending(x => x.EndDate) .ToList();
вы также можете использовать синтаксис запросов и сказать:
var hold = (from x in MyList orderby x.StartDate, x.EndDate descending select x).ToList();
ThenByDescending
является методом расширения наIOrderedEnumerable
это то, что возвращаетсяOrderBy
. См. также связанный методThenBy
.
MyList.OrderBy(x => x.StartDate).ThenByDescending(x => x.EndDate);
обратите внимание, что вы можете использовать также Ключевое слово по убыванию в OrderBy (в случае необходимости). Так что еще один возможный ответ:
MyList.OrderByDescending(x => x.StartDate).ThenByDescending(x => x.EndDate);