IQueryable ToList()似乎失去了顺序

IQueryable ToList()似乎失去了顺序,list,entity-framework-4,pagination,iqueryable,List,Entity Framework 4,Pagination,Iqueryable,我有一个EF4模型和一个从模型中获取分页项(Anagrafica实体)的方法,类似(simplyfied): public List Get(字符串SortExpression、int startRowIndex、int maximumRows) { 返回context.Anagrafiche.Where(/*一些过滤器*/) .OrderBy(SortExpression) .Skip(startRowIndex) .Take(maximumRows.ToList(); } 它全部由Asp.

我有一个EF4模型和一个从模型中获取分页项(Anagrafica实体)的方法,类似(simplyfied):

public List Get(字符串SortExpression、int startRowIndex、int maximumRows)
{
返回context.Anagrafiche.Where(/*一些过滤器*/)
.OrderBy(SortExpression)
.Skip(startRowIndex)
.Take(maximumRows.ToList();
}
它全部由Asp.Net项目中的ObjectDataSource管理,数据绑定到Telerik RadGrid

问题是,如果我将SortExpression设置为一个具有空值的字段,出于某种原因,该方法给出的列表似乎具有随机顺序

它是正确的结果“页面”(例如,我可以从sql查询中获得相同的前10个元素),但在列表内部,顺序是随机的


我不知道为什么。

我想问题在于跳过函数

我们有两个iqueryable列表,它们被合并成一个,这两个查询是自己排序的。如果我们得到的结果没有跳过函数,这一切都是好的,但使用跳过顺序后,会被破坏。我需要解决这个问题,但现在它就像一场噩梦

我的意思是:

IQueryable列表1: 1.身份证号码:1 2.身份证号码:5 3.身份证号码:8

IQueryable列表2: 1.身份证号码:2 2.身份证号码:3 3.身份证号码:9

CocatList=list1.concat(list2)

如果我们在不使用跳过函数的情况下执行,结果是:

  • 身份证号码:1
  • 身份证号码:5
  • 身份证号码:8
  • 身份证号码:2
  • 身份证号码:3
  • 身份证号码:9
  • 但如果我们使用skip,结果如下:

    第1页(不带跳过,带take): 1.身份证号码:1 2.身份证号码:5 3.身份证号码:8

    第2页(带跳过、带取): 1.身份证号码:3 2.身份证号码:9 3.身份证号码:5


    我想这都是由于跳过造成的。

    无法对空值进行排序。检查此问题:[问题][1][1]:
    public List<Anagrafica> Get(string SortExpression, int startRowIndex, int maximumRows) 
    {
        return context.Anagrafiche.Where(/* some filters */)
                                 .OrderBy(SortExpression)
                                 .Skip(startRowIndex)
                                 .Take(maximumRows).ToList();
    }