2010-07-26 23 views
5

tôi đang cố gắng ra EF 4.0.I có một đối tượng Employee và EF Tôi nhận Employee ObjectSet bằng cách đơn giản gọiNhận Objects từ một ObjectSet bằng cách xác định một cấp ở EF

Context.Employees

Bây giờ trên sử dụng cuộc gọi sẽ nhổ sau truy vấn sql select * from Employees

Truy vấn trên hoạt động tốt và tôi không có bất kỳ lời phàn nàn nào vì bạn biết điều này sẽ không đủ hiệu quả nếu bạn có vài triệu bản ghi trong bảng và chắc chắn ảnh hưởng đến hiệu suất.

Vì vậy, sau đó tôi đang cố gắng tìm ra cách để đưa ra một phạm vi cho ObjectSet của tôi, nơi tôi có thể nói điều gì đó giống như có được tôi ghi 30-60 từ Employee ObjectSet.

Có cách nào để làm điều gì đó như thế này không.

Mọi đề xuất sẽ được đánh giá cao.

Cập nhật: Tôi đang cố gắng thực hiện việc này để nhận được 20 Nhân viên (kích thước trang) trở lại dựa trên chỉ mục trang.

Xin cảm ơn trước. NiK ...

Trả lời

4

Ok, cuối cùng tôi đã tìm ra cách để làm điều này mà tôi nghĩ là khá tốt. Và đây là những gì tôi đã làm.

Tôi đã sử dụng các phương thức Bỏ qua và Lấy trong IQueryable để bỏ qua và lấy các đối tượng dựa trên chỉ mục trang.

Vì vậy, tôi đã sử dụng đoạn mã sau:

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

Đây là một cách.

Nếu bất cứ ai cảm thấy rằng đây không phải là giải pháp tốt, bạn được chào đón nhiều hơn để tìm ra thứ gì đó khác mà tôi có thể thay thế bằng.

Cập nhật Mã Theo đề nghị của Yury Tarabanko của tôi đã thay đổi mã của tôi như sau:

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

Cảm ơn những người đã dành thời gian để đọc câu hỏi của tôi.

Thnq, NiK ...

+0

Bằng cách này, bạn có thể sử dụng 'OrderBy (e => e.CreatedDate)' để tránh 'dây ma thuật'. –

+0

Cảm ơn rất nhiều Yury. – NiK

+0

huhu works.Thanks for the answer. – user153410

Các vấn đề liên quan