Получить общее количество записей при разбиении на страницы
Чтобы получить страницу из базы данных, я должен выполнить что-то вроде этого:
var cs = ( from x in base.EntityDataContext.Corporates
select x ).Skip( 10 ).Take( 10 );
Это пропустит первые 10 строк и выберет следующие 10.
Как узнать, сколько строк будет получено из-за запроса без разбивки на страницы? Я не хочу запускать другой запрос, чтобы получить счет.
Ответы
Ответ 1
Чтобы получить общее количество записей перед пропуском/взятием, вам нужно запустить отдельный запрос. Получение возвращаемого фактического числа будет использовать Count(), но не приведет к другому запросу, если исходный запрос был реализован.
var q = from x in base.EntityDataContext.Corporates
select x;
var total = q.Count();
var cs = q.Skip(10).Take(10);
var numberOnSelectedPage = cs.Count();
Ответ 2
Нижняя строка: вам нужно запустить два запроса. Вы просто не можете обойти это.
Здесь хороший способ сделать это, чтобы кэшировать исходный запрос и фильтр LINQ, делая меньше ошибок копирования/вставки:
var qry = from x in base.EntityDataContext.Coporates select x;
var count = qry.Count();
var items = qry.Skip(10).Take(10).ToList();