У меня есть пейджинговый API, который возвращает строки, запрашиваемые пользователем, но только так много за один раз, а не всю коллекцию. API работает так, как планировалось, но мне нужно рассчитать общее количество доступных записей (для правильных расчётов страниц). В API я использую Linq2Sql, и я много работаю с IQueryable, прежде чем я, наконец, сделаю свои запросы. Когда я иду, чтобы получить счет, я вызываю что-то вроде: totalRecordCount = queryable.Count();
Получающийся SQL интересен тем не менее, но он также добавляет ненужный порядок, который делает запрос очень дорогостоящим.
exec sp_executesql N'SELECT COUNT(*) AS [value]
FROM (
SELECT TOP (1) NULL AS [EMPTY]
FROM [dbo].[JournalEventsView] AS [t0]
WHERE [t0].[DataOwnerID] = @p0
ORDER BY [t0].[DataTimeStamp] DESC
) AS [t1]',N'@p0 int',@p0=1
Поскольку я использую IQueryable, я могу манипулировать IQueryable перед тем, как сделать это на сервере SQL.
Мой вопрос: если у меня уже есть IQueryable с OrderBy в нем, можно ли удалить этот OrderBy, прежде чем я вызову Count()?
like: totalRecordCount = queryable. NoOrder.Count();
Если нет, не biggie. Я вижу много вопросов, как OrderBy, но не связанных с удалением OrderBy из выражения Linq.
Спасибо!