5

我正在尝试 EF 4.0。我有一个 Employee 对象并使用 EF 我通过简单地调用来获取 Employee ObjectSet

Context.Employees

现在上面的调用将吐出以下 sql 查询 select * from Employees

上面的查询工作正常,我没有任何抱怨,但是你知道,如果表中有几百万条记录,这将不够高效,而且肯定会影响性能。

因此,我试图找出一种方法来为我的 ObjectSet 提供一个范围,在那里我可以说让我从 Employee ObjectSet 中获取 30 到 60 条记录。

有没有办法做这样的事情。

任何建议将不胜感激。

更新: 我正在尝试这样做以根据页面索引恢复 20 名员工(页面大小)。

提前致谢。尼克...

4

1 回答 1

4

好的,我终于想出了一种方法来做到这一点,我认为这是相当不错的。这就是我所做的。

我使用 IQueryable 中的 Skip 和 Take 方法来根据页面索引跳过和获取对象。

所以我使用了以下代码:

var empList = context.Employees.OrderBy("it.CreatedDate").Skip(pageIndex * 20 - 20).Take(20);

这是一种方式。

如果有人觉得这不是一个好的解决方案,我们非常欢迎您提出其他我可以替换的东西。

更新代码 根据 Yury Tarabanko 的建议,我将代码更改如下:

var empList = context.Employees.OrderBy(x=>x.CreatedDate).Skip(pageIndex * 20 - 20).Take(20);

感谢那些花时间阅读我的问题的人。

谢谢,尼克...

于 2010-07-26T06:48:21.577 回答