У меня есть ситуация, когда я обновляю большой объем контента в CMS (Sitecore) в одночасье, когда мне приходится перебирать очень большой объем данных, но нужно применить только несколько обновлений (Приблизительно 320 000 потенциальных полейи в предположении, может быть, 3000, где значения действительно меняются).Я хочу упростить это так, чтобы обновления производились только тогда, когда новое значение отличается от текущего значения.Таким образом, я надеюсь минимизировать объем повторной индексации, которая происходит после выполнения обновлений, а также минимизировать объем контента, который впоследствии публикуется.
Это пример того, что я делаю сейчас
langItem.Fields["Type"].Value = updateNode.SelectSingleNode("./Type").InnerText;
И это то, на что я обращаюсь, чтобы изменить его на
if (langItem.Fields["Type"].Value != updateNode.SelectSingleNode("./Type").InnerText)
langItem.Fields["Type"].Value = updateNode.SelectSingleNode("./Type").InnerText;
Я чувствую, что должен быть какой-то оператор, который позаботится об этом дляя. Я не думаю, что есть, но если есть, пожалуйста, дайте мне знать, что это такое.Существует много запросов XPath (все мои данные в формате XML), и я чувствую, что повторять их бесполезно, но создание переменных для всех из них также кажется плохой формой.Также есть примеры, когда правая часть включает вызов метода.Я думаю, что в таких ситуациях создание переменной для результата имеет смысл.
Какие еще есть варианты для оптимизации этого?