考虑在5 或 6 层深的对象的一个或多个属性上更改数据成员的要求。
有一些子集合需要迭代才能到达需要检查和修改的属性。
在这里,我们调用了一个清除 Employee 街道地址的方法。由于我们在循环中更改数据,当前的实现需要一个for
循环来防止异常:
无法分配给“someVariable”,因为它是“foreach 迭代变量”
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/选择器类型的解决方案。我没有用那种方式专门提出这个问题。我意识到我在这个想法上太过分了(没有副作用)。谢谢大家!如果有这样的方法来执行类似 jQuery 的选择器,请让我们看看吧!