Я использую LINQ to SQL для поиска в довольно большой базе данных и не уверен в том, какой подход лучше использовать для подкачки с помощью DataPager. Мне известны методы Skip () и Take (), и они работают правильно. Однако я не могу использовать счетчик результатов для пейджера данных, поскольку они всегда будут иметь размер страницы, определенный в методе Take ().
Например:
var result = (from c in db.Customers
where c.FirstName == "JimBob"
select c).Skip(0).Take(10);
Этот запрос всегда будет возвращать 10 или менее результатов, даже если есть 1000 JimBobs. В результате DataPager всегда думает, что есть одна страница, и пользователи не могут перемещаться по всему набору результатов. Я видел одну онлайн-статью, в которой автор просто написал другой запрос, чтобы получить общее количество, и назвал его.
Что-то вроде:
int resultCount = (from c in db.Customers
where c.FirstName == "JimBob"
select c).Count();
и использовал это значение для DataPager. Но я бы предпочел не копировать и вставлять каждый запрос в отдельный вызов, где я хочу публиковать результаты по понятным причинам. Есть ли более простой способ сделать это, который может быть повторно использован для нескольких запросов?
Спасибо.