Рассмотрим требование изменить элемент данных по одному или нескольким свойствам объекта с глубиной 5 или 6 уровней.
Существуют подкатегории, которые необходимо перебирать, чтобы получить свойство, которое нуждается в проверке и модификации.
Здесь мы вызываем метод, который очищает уличный адрес сотрудника. Поскольку мы меняем данные в циклах, для текущей реализации требуется цикл for
для предотвращения исключения:
Невозможно назначить "someVariable", потому что это "переменная итерации foreach"
Здесь текущий алгоритм (obfuscated) с вложенными foreach
и a for
.
foreach (var emp in company.internalData.Emps)
{
foreach (var addr in emp.privateData.Addresses)
{
int numberAddresses = addr.Items.Length;
for (int i = 0; i < numberAddresses; i++)
{
//transform this street address via a static method
if (addr.Items[i].Type =="StreetAddress")
addr.Items[i].Text = CleanStreetAddressLine(addr.Items[i].Text);
}
}
}
Вопрос: Может ли этот алгоритм быть повторно реализован с помощью LINQ? Требование состоит в том, чтобы исходная коллекция изменила свои данные на этот вызов статического метода.
Обновление: Я думал/наклонялся в направлении решения типа jQuery/selector. Я специально не задавал этот вопрос таким образом. Я понимаю, что я преувеличиваю эту идею (никаких побочных эффектов). Спасибо всем! Если есть такой способ выполнения селектора типа jQuery, пожалуйста, посмотрите его!