При выполнении кода ниже я получаю разные результаты при выполнении в памяти и SQL-заказе. Может кто-нибудь объяснить, почему это так. Я ожидал, что запросы возвратят записи в точно таком же порядке.Заказ Linq на NHibernate не работает должным образом
IQueryable<WaitListListItem> query = GetQuery();
query = query.OrderBy(f => f.CourseNo);
int pageSize = 14;
int startRecord = 6;
IList<WaitListListItem> list1 = query.Skip(startRecord).Take(pageSize).ToList(); // database query paging
IList<WaitListListItem> list2 = query.ToList().Skip(startRecord).Take(pageSize).ToList(); // In Memory paging
Print(pageSize, list1, list2);
int pageSize2 = 14;
int startRecord2 = 0;
IList<WaitListListItem> list3 = query.Skip(startRecord2).Take(pageSize2).ToList(); // database query paging
IList<WaitListListItem> list4 = query.ToList(); // No Paging
Print(pageSize2, list3, list4);
Console.ReadLine();
Дальнейшее примечание. Порядок правилен тем, что список сортируется по номеру курса в алфавитном порядке. Однако записи, содержащие один и тот же номер курса – user3845056
Это, похоже, проблема с поисковым вызовом и не сортировкой. Сортировка выполняется в БД в обоих случаях. Это пейджинг, который выполняется в БД и в памяти. Можете ли вы опубликовать сгенерированный SQL для обоих? – Euphoric