Получите общее количество записей при выполнении разбиения на страницы

Для получения страницы от базы данных, я должен выполнить что-то вроде этого:

var cs = ( from x in base.EntityDataContext.Corporates
   select x ).Skip( 10 ).Take( 10 );

Это пропустит первые 10 строк и выберет следующие 10.

Как я могу знать, сколько строк закончилось бы из-за запроса без разбиения на страницы? Я не хочу выполнять другой запрос для получения количества.

12
задан R. Martinho Fernandes 5 January 2010 в 20:13
поделиться

2 ответа

[

] Для получения общего количества записей до пропуска/принятия необходимо выполнить отдельный запрос. Получение действительного возвращаемого числа будет использовано функцией 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();
]
21
ответ дан 2 December 2019 в 04:33
поделиться
[

] Итог: вы должны выполнить два запроса. Вы просто не можете обойти его. [

] [

]Хороший способ сделать это, однако, это кэшировать оригинальный LINQ-запрос и фильтр, делая меньше ошибок копирования/вставки:[

] [
var qry = from x in base.EntityDataContext.Coporates select x;
var count = qry.Count();
var items = qry.Skip(10).Take(10).ToList();
]
12
ответ дан 2 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: