Queryable.Count
Поведение запроса, возникающее в результате выполнения дерева выражений, представляющего вызов Count (IQueryable), зависит от реализации типаисходный параметр.Ожидаемое поведение - подсчет количества элементов в источнике.
Фактически, если вы используете LinqToSql или LinqToEntities, Queryable.Count()
отправляется в базу данных.Столбцы не загружены в память.Проверьте сгенерированный sql для подтверждения.
Я предполагаю, что при использовании запроса на выборку он заполняется данными, когда я использую query.Count vs Table.Count
Это не правда.Проверьте сгенерированный sql для подтверждения.
Мне нужно продублировать всю копию запроса.Есть ли способ структурировать мой запрос, где у меня может быть одно место для обоих подсчетов и для получения списка со всеми полями
Если вам нужны и счет, и список, получите список ипосчитайте его.
Если вам нужен подсчет, иногда, а иногда вам нужен список ... напишите метод, который возвращает сложный IQueryable, а иногда вызывайте .Count () и другие вызовы раз .ToList ();
Мне на самом деле не нужны данные столбца, и я полагаю, что таким образом быстрее их не выбирать.
Это в основном неверно в вашем сценарии.Это может быть верно в сценарии, где индекс охватывает столбцы результата, но у вас нет столбцов результата.
В вашем сценарии, какой бы индекс не был выбран оптимизатором запросов, этот индекс может использоваться длясделайте счет.
Суммируйте: Оптимизатор запросов выполнит желаемую оптимизацию.