считайте выбор VS в LINQ - который быстрее?

Это в node-modules/react-drag-sortable/lib/index.js

Это экспортируется со следующей строкой в ​​конце файла:

exports.default = DragSortableList;
11
задан Matt Kocaj 16 February 2009 в 10:41
поделиться

2 ответа

Вызов ToList() возвратит подлинное List<T> со всеми данными, что означает выбирать все данные.Не очень.

Вызов Count() должен действительно представить SQL для проведения подсчета на стороне базы данных. Намного лучше.

Самый простой способ проверить это, однако, состоит в том, чтобы позволить войти в систему Ваш контекст данных (или независимо от того, что эквивалент для Вашего конкретного поставщика), и посмотрите то, какие запросы на самом деле отправляются.

21
ответ дан 3 December 2019 в 06:23
поделиться

Я не уверен, является ли это жесткое правило, но linq метод, который Вы добавляете к Iqueryable, будет добавлен в linq дерево выражений - если они не будут одним из методов, которые на самом деле заставляют дерево быть оцененным (как ToList и Единственные и т.д.). В случае LinqToSql Вы будете знать, не может ли он преобразовать что-то в SQL-оператор, потому что Вы получите исключение на этапе выполнения, заявляя, что метод не поддерживается.

например,

var something = dbContext.SomeTable
  .Select(c => c.col1 == "foo")
  .Distinct()
  .ToList()
  .Count()

В вышеупомянутом Выбор () и Отличный () включен в запрос SQL, переданный серверу, потому что они добавляются к Iqueryable. Количество () просто действует на список, который был возвращен запросом SQL. Таким образом, Вы не хотите делать это тот путь :-)

В Вашем случае количество () определенно будет быстрее, что Выбор (), потому что получающийся sql оператор действительно включит количество так сервер только, должен возвратить единственное число, а не список строк.

-1
ответ дан 3 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

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