У меня была такая же проблема, и я нашел следующее решение:
Item[] items = Sitecore.Context.Database.SelectItems(query);
Это не будет работать, так как ваш код выполняется в (текущем) контексте . И код выполняется по пути
/ Sitecore / содержание / ShrinersHospital2 / CareAndTreatment
С помощью вашего запроса выше вы указываете sitecore искать по пути
/ Sitecore / содержание / ShrinersHospital2 / CareAndTreatment / Sitecore / содержание / ShrinersHospital2 / CareAndTreatment
, который вернет 0 элементов в результате, потому что путь не существует.
Попробуйте следующий запрос:
string query = "//*[@@templatename = 'CareAndTreatmentType' and @TreatmentType = '{ECDBE944-99DE-4347-8FA2-6613FA85402C}']";
Item[] items = Sitecore.Context.Database.SelectItems(query);
Когда вы переключаете свою базу данных на «web», у вас нет контекста, и ваш «начальный» путь - /. Тогда код ниже возвращает элементы с вашим запросом, потому что путь существует
/ sitecore / content / ShrinersHospital2 / CareAndTreatment
string query = "/sitecore/content/ShrinersHospital2/CareAndTreatment//*[@@templatename = 'CareAndTreatmentType' and @TreatmentType = '{ECDBE944-99DE-4347-8FA2-6613FA85402C}']";
var database = Sitecore.Configuration.Factory.GetDatabase("web");
items = database.SelectItems(query);