考慮對更改的要求,該數據成員是深度爲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