Какой лучший шаблон для получения постраничных результатов с LINQ to SQL?
У меня есть следующий сценарий:
Предположим, что я хочу искать таблицу элементов по описанию. Я легко могу сделать:
public IQueryable<Item> FindItemsByDescription(string description)
{
return from item in _dc.Items
where item.Description.Contains(description);
}
Теперь, что было бы лучшим способом для разбиения на страницы этого набора результатов?
- Должен ли я выполнять запрос количества, прежде чем делать это, чтобы узнать размер набора результатов, а затем ограничить этот запрос в соответствии с тем, что я хочу? Я чувствую, что это путь.
- Должен ли я выполнять полный запрос, считать количество из массива и возвращать только разбитое на подмножество подмножество из этого массива? Я чувствую, что это будет огромная трата времени, если набор результатов достаточно велик... Или LINQ to SQL делает какую-то магию здесь?
Существует ли общий шаблон LINQ to SQL для выполнения этой операции?
EDIT: Я должен прояснить одну мелочь. Я знаю методы Take and Skip. Но прежде чем использовать Take и Пропустить, как мне получить итоговое количество результатов, которые запрос будет получать?