1
当执行下面的代码时,当我在内存和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 2014-11-04 00:32:54
这似乎是分页和不分页的问题。在两种情况下,排序都在DB中完成。它是在DB和内存中完成的分页。你能为两者发布生成的SQL吗? – Euphoric 2014-11-04 07:27:52