Есть поисковой запрос,который выводит значения из базы данных. Проблема в том,что вхождений может быть огромное количество и поэтому хочу сделать пагинацию. Вопрос в том,как это реализовать, если не знаешь сколько тебе выведет вхождений.Пока имею только такой поверхностный код.
[HttpGet]
[Route("/search/{searchform}")]
public ActionResult Search(string searchform)
{
var search = _context.SlideDb.Where(p => p.TextSlide.Contains(searchform));
var dataPag = search.Take(30);
var dataPag2 = search.Skip(30).Take(30);
return Ok(dataPag);
}
Ну так обычно и делается и в самоделках и пакетах типа PagedList (поковыряйте их исходники: они оба есть на гитхабе - и старый и core'овский), почитайте например на метаните.
И претензии в общем-то одинаковые - что работает это не очень эффективно по скорости, поищите статьи на хабре, (например, вот тут рекомендуют использовать лямбды) там разбирались вопросы почему Skip+Take проигрывает raw sql.
Ну и до кучи, не знаю, это у вас заготовка и опущены важные подробности, но вы не используете .AsNoTracking() - и выключив отслеживание изменений вы можете получить прирост до 10% (цифра из очень старого отчёта майкрософт по EF5, новых не видел).
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости