При этом мне нужно выбрать подмножество данных, скажем, 50 строк, но также получить количество всех совпадений, чтобы узнать, сколько всего совпадений существует для постраничного просмотра.
В настоящее время я выполняю следующее:
Код: Выделить всё
var queryResult = DatabaseContext.Table
.Where(x => !x.IsDeleted)
.Where(p => (
p.PropertyOne.ToLower().Contains(query) ||
p.PropertyTwo.ToLower().Contains(query)
));
int count = queryResult.Count();
var returnData = queryResult
.OrderBy(i => i.ID)
.Skip(start).Take((length))
.Select(y => new ObjectDTO
{
PropertyOne = y.PropertyOne,
PropertyTwo = y.PropertyTwo
}
.AsEnumerable();
Есть ли способ получить количество и подмножество в одном и том же операцию?
Логическая последовательность действий подсказывает мне, что мы делаем следующее:
- Просмотрите таблицу.
- Найдите в таблице элементы, соответствующие условию.
- Получите количество всех совпадений.
- Вернуть пронумерованное подмножество совпадений
Попытка первая, медленнее
Попробовал предложение Д. Стэнли о преобразовании полного набора результатов в список
code> и выполняет подсчет и память при подкачке, но это примерно в 2 раза медленнее (в среднем 6,9 с против 3,9 с в среднем)
Стоит отметить, что набор данных составляет примерно 25 000 записей. , с более чем дюжиной связанных таблиц, поиск по которым осуществляется посредством JOIN.
Подробнее здесь: https://stackoverflow.com/questions/292 ... o-entities