在EF

2010-07-26 16 views
5

我嘗試了EF 4.0.I指定一個範圍,獲得從對象集對象有一個Employee對象並使用EF我通過簡單地調用在EF

Context.Employees

現在上面得到員工對象集呼叫將吐下面的SQL查詢 select * from Employees

上述查詢工作正常,我沒有任何抱怨,但你知道,如果你有在表中的數百萬記錄,這將不夠高性能,它會絕對影響性能。

所以然後我試圖找出一種方法來給我的ObjectSet的範圍,我可以說從我的員工ObjectSet記錄30到60。

有沒有辦法做這樣的事情。

任何建議將深受讚賞。

更新: 我試圖做到這一點,以獲得20名員工(頁面大小)回來的基礎上的頁面索引。

在此先感謝。 NiK ...

回答

4

好的,我終於想出了一種方法來做到這一點,我認爲這是相當不錯的。這就是我所做的。

我使用IQueryable中的Skip和Take方法根據頁面索引跳過並取對象。

所以我用下面的代碼:

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

這是一種方式。

如果有人覺得這不是一個好的解決方案,那麼歡迎您提出一些我可以替代的東西。

更新的代碼 按照尤里Tarabanko的建議,我改變了我的代碼如下:

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

感謝那些誰花時間來閱讀我的問題。

Thnq, NIK ...

+0

順便說一句,你可以用'排序依據(E => e.CreatedDate)'以避免 '魔串'。 – 2010-07-26 08:17:47

+0

非常感謝Yury。 – NiK 2010-07-26 13:09:15

+0

huhu works.Thanks for the answer。 – user153410 2010-07-26 17:11:42