考虑对更改的要求,该数据成员是深度为5或6级的对象的一个或多个属性。用LINQ替换嵌套的foreach;修改和更新深度内的属性
有些子集需要迭代才能到达需要检查&修改的属性。
这里我们调用一个清除员工街道地址的方法。由于我们在循环中不断变化的数据,目前的实现需要一个for
循环,防止异常:
不能分配给“someVariable”,因为它是一个“的foreach迭代变量”
这里的当前算法(混淆)嵌套foreach
和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的选择器,请让我们看看它!
谢谢。你和Merhdad的答案在功能上是完全相同的,但我首先看到了你的答案:)我认为重新输入代码是毫无意义的,但我认为重要的是要提出副作用 – 2009-08-26 17:19:00
LINQ不是SQL Server,尽管实现对于SQL而言,与.NET不同 - 您仍然可以使用这两个集合(LINQ to SQL)和C#LINQ来更改属性。 – ppumkin 2017-10-13 12:32:31