XPathSelectElement по сравнению с потомками

Для LINQ2SQL: Получение Вашей головы вокруг части сгенерированного SQL и записи запросов LINQ, которые переводят в хороший (быстрый) SQL. Это - часть большей проблемы знания, как сбалансировать декларативную природу запросов LINQ с реализмом, который они должны выполнить быстро в известной среде (SQL Server).

можно добраться, совершенно другой SQL генерировал запрос путем изменения крошечной крошечной вещи в коде LINQ. Может быть особенно опасным, если Вы создаете дерево выражений на основе условных операторов (т.е. добавляете дополнительные критерии фильтрации).

8
задан Mattias 27 October 2009 в 09:16
поделиться

2 ответа

Обратите внимание, что этот

var x = document.Elements("actors").Elements("actor").FirstOrDefault();

является эквивалентом вашего первого оператора.

Будет разница в производительности, потому что методы делают очень разные вещи под капотом. Однако оптимизация чисто операций в памяти немного бессмысленна, если вы не имеете дело с большим набором данных. Если вы имеете дело с большим набором данных, вам следует измерить производительность обеих альтернатив, а не пытаться предсказать, какая из них будет работать быстрее.

8
ответ дан 5 December 2019 в 12:10
поделиться

Да, будет, хотя эти две строки не эквивалентны.

В конечном итоге XPath необходимо преобразовать в выражение LINQ, которое затем сделало бы следующее: -

var x = document.Elements("actors").Elements("actor");

Однако вполне возможно, что скомпилированная версия выражения XPath сохраняется внутри, так что использование XPath стоит только времени, необходимого для поиска строка в некотором внутреннем словаре. Так ли это на самом деле, я не знаю.

1
ответ дан 5 December 2019 в 12:10
поделиться
Другие вопросы по тегам:

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