5 レベルまたは 6 レベルの深さのオブジェクトの 1 つ以上のプロパティでデータ メンバーを変更する必要があるとします。
検査と変更が必要なプロパティに到達するために反復する必要があるサブコレクションがあります。
ここでは、Employee の住所を消去するメソッドを呼び出しています。ループ内でデータを変更しているため、現在の実装でfor
は例外を防ぐためにループが必要です。
「foreach 反復変数」であるため、「someVariable」に代入できません
ネストされた と を使用した現在のアルゴリズム (難読化) を次に示し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/selector タイプのソリューションの方向性を考えていました。私はこの質問をそのように具体的に言いませんでした。私はその考えに行き過ぎていたことに気づきました(副作用はありません)。みんなありがとう!jQueryのようなセレクターを実行する方法があれば、それを見てみましょう!