IQueryable ToList()似乎失去了排序

时间:2011-08-25 14:16:05

标签: list entity-framework-4 pagination iqueryable

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

public List<Anagrafica> Get(string SortExpression, int startRowIndex, int maximumRows) 
{
    return context.Anagrafiche.Where(/* some filters */)
                             .OrderBy(SortExpression)
                             .Skip(startRowIndex)
                             .Take(maximumRows).ToList();
}

在Asp.Net项目中使用ObjectDataSource进行管理,并将数据绑定到Telerik RadGrid。

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

这是结果的正确“页面”(例如,我可以从sql查询获得相同的前10个元素),但在List内部,订单是随机的。

我不知道为什么。

1 个答案:

答案 0 :(得分:0)

我猜问题就在于跳过功能。

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

我是这样的意思:

IQueryable list 1: 1. ID:1 2.身份证号码:5 3. ID:8

IQueryable list 2: 1.身份证:2 2.身份证号码:3 3. ID:9

CocatList = list1.concat(list2)

如果我们不使用跳过功能,结果是:

  1. ID:1
  2. ID:5
  3. ID:8
  4. ID:2
  5. ID:3
  6. ID:9
  7. 但如果我们使用skip,结果就像:

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

    第2页(跳过,带走): 1.身份证号码:3 2.身份证号码:9 3. ID:5

    这一切都是由我跳过引起的。