执行下面的代码时,我在内存和SQL排序中执行时会得到不同的结果。谁能解释为什么会这样。我希望查询以完全相同的顺序返回记录。
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();
答案 0 :(得分:1)
在内存中,由于多种原因,排序可能会有所不同。假设CourseNo是一个字符串而不是一个数字:
由于您在代码示例中未指定上述任何内容,因此很难确切地说明您的情况发生了什么,但如果您希望排序完全相同,那么您应该确保上述每个问题在数据库和应用程序中以相同的方式处理。