Для получения страницы от базы данных, я должен выполнить что-то вроде этого:
var cs = ( from x in base.EntityDataContext.Corporates
select x ).Skip( 10 ).Take( 10 );
Это пропустит первые 10 строк и выберет следующие 10.
Как я могу знать, сколько строк закончилось бы из-за запроса без разбиения на страницы? Я не хочу выполнять другой запрос для получения количества.
] Для получения общего количества записей до пропуска/принятия необходимо выполнить отдельный запрос. Получение действительного возвращаемого числа будет использовано функцией 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();
] ] Итог: вы должны выполнить два запроса. Вы просто не можете обойти его. [
] []Хороший способ сделать это, однако, это кэшировать оригинальный LINQ-запрос и фильтр, делая меньше ошибок копирования/вставки:[
] [var qry = from x in base.EntityDataContext.Coporates select x;
var count = qry.Count();
var items = qry.Skip(10).Take(10).ToList();
]