【问题标题】:IQueryable ToList() seems to lose the orderingIQueryable ToList() 似乎失去了排序
【发布时间】:2011-11-03 18:01:21
【问题描述】:

我有一个 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 内部,顺序是随机的。

我不知道为什么。

【问题讨论】:

标签: list entity-framework-4 pagination iqueryable


【解决方案1】:

我猜问题出在跳过功能上。

我们有两个 iqueryable 列表连接成一个,这两个查询是自己排序的。如果我们在没有跳过功能的情况下得到结果,那一切都可以,但是在使用跳过顺序之后就毁了。我需要解决这个问题,但现在它就像一场噩梦。

我的意思是这样的:

IQueryable 列表 1: 1. ID:1 2. ID:5 3. ID:8

IQueryable 列表 2: 1. ID:2 2. ID: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

但是如果我们使用skip,结果是这样的:

第 1 页(没有跳过,有拍摄): 1. ID:1 2. ID:5 3. ID:8

第 2 页(有跳过,有拍摄): 1. ID:3 2. 编号:9 3. ID:5

我猜都是skip造成的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多