Entity Framework Core 2.1 Как упорядочитьBy () и Distinct () - PullRequest
0 голосов
/ 06 октября 2018

Я хочу выбрать отличный от своей таблицы, чтобы получить список лет. Поэтому я написал код:

return await _context.SdrSettingHistory
                .Where( x => x.StartDate != null)
                .OrderBy(x => x.StartDate)
                .Select(x => x.StartDate.Value.Year)
                .Distinct()
                .ToListAsync();

Но он вернул не упорядоченный год.он вернулся как [2014,2015,2013] Как я предполагаю, чтобы заказать год?

Я пытался переместить OrderBy после Distinct (), он выдает ошибку:

error CS1061: 'int' does not contain a definition for 'StartDate' and no accessible extension method 'StartDate' accepting a first argument of type 'int' could be found (are you missing a using directive or an assembly reference?)

Примечание: я используюASP.NET с EF Core 2.1

1 Ответ

0 голосов
/ 06 октября 2018

Операторы Select и Distinct не гарантируют сохранение порядка в других поставщиках данных, таких как SQL Server.Вам нужно переместить вашего оператора OrderBy за ними.Поскольку ваше прогнозируемое значение после Select равно int, вы можете просто заказать его напрямую:

return await _context.SdrSettingHistory
    .Where(x => x.StartDate != null)
    .Select(x => x.StartDate.Value.Year)
    .Distinct()
    .OrderBy(x => x)
    .ToListAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...