OrderBy не имеет никакого эффекта в LINQ - PullRequest
0 голосов
/ 02 мая 2018

У меня есть таблица с набором данных, следующим образом:

enter image description here

Обратите внимание, что приведенные выше результаты собраны с помощью следующего SQL-запроса:

select * from Logs where RegisterationId = 16 
 and date = '2018-04-13 00:00:00.000'
order by DateTime ASC;

Теперь это прекрасно, но когда я пытаюсь сделать то же самое в LINQ, используя:

var logs = db.Logs.Where(x => x.RegisterationId == EnrollNumber && x.Date >= StartDate &&
               x.Date <= EndDate && x.isIgnore != true).OrderBy(x => x.DateTime).Distinct().ToList();

дает все журналы Manual_Entry вместе внизу / в конце списка (обратите внимание на индексы 15, 16 и 17 на снимках ниже), а не на OrderBy DateTime. Мне нужно, чтобы они были отсортированы так, как это делается с помощью SQL-запроса:

enter image description here

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Как уже упоминал @Ivan Stoev: OrderBy, прежде чем Distinct / GroupBy игнорируется переводчиком LINQ to Entities.

Но если вы должны использовать его, используйте его до OrderBy

 var logs = db.Logs.Where(x => x.RegisterationId == EnrollNumber && x.Date >= 
                    StartDate && x.Date <= EndDate && x.isIgnore != true).Distinct().OrderBy(x => x.DateTime).ToList();

Исключая Distinct() должен дать вам соответствующий список:

var logs = db.Logs.Where(x => x.RegisterationId == EnrollNumber && x.Date >= 
                   StartDate && x.Date <= EndDate && x.isIgnore != true).OrderBy(x => x.DateTime).ToList();
0 голосов
/ 02 мая 2018

.Distinct уничтожает заказ. Переключите положение вызовов Distinct и OrderBy.

...