Получить объекты из ObjectSet, указав диапазон в EF

Я пробую EF 4.0. У меня есть объект Employee, и с помощью EF я получаю ObjectSet Employee, просто вызывая

Context.Employees

Теперь вышеприведенный вызов будет выплевывать следующий SQL-запросselect * from Employees

Приведенный выше запрос работает нормально, и у меня нет никаких претензий к нему, однако, как вы знаете, этого будет недостаточно, если у вас есть несколько миллионов записей в таблице, и это определенно повлияет на производительность.

Итак, я пытаюсь найти способ дать диапазон моему ObjectSet, где я могу сказать что-то вроде получения записей от 30 до 60 из Employee ObjectSet.

Есть ли способ сделать что-то подобное.

Любые предложения будут высоко оценены.

Обновление: я пытаюсь сделать это, чтобы вернуть 20 сотрудников (размер страницы) на основе индекса страницы.

Заранее спасибо. НиК...

1 ответ

Решение

Хорошо, я наконец-то нашел способ сделать это, который я считаю довольно приличным. И вот что я сделал.

Я использовал методы Skip и Take в IQueryable, чтобы пропустить и взять объекты на основе индекса страницы.

Поэтому я использовал следующий код:

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

Это один из способов.

Если кто-то считает, что это не очень хорошее решение, вы можете предложить что-то еще, чем я могу заменить.

Обновленный код В соответствии с предложением Юрия Тарабанко я изменил свой код следующим образом:

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

Спасибо тем, кто нашел время, чтобы прочитать мой вопрос.

Thnq, NiK...

Другие вопросы по тегам