1

foreach ループで使用した値を取得するためのラムダ式を教えてください。

foreach (var keysValue in configParameters)
        {
            foreach (XmlNode childNode in node.ChildNodes)
            {
                if (childNode.Attributes["key"].Value == keysValue.Key)
                {
                    childNode.Attributes["value"].Value = keysValue.Value;
                }
            }
        }

私はランバ式に触れたことがないので、皆さんに質問しています。学習にも親切に助けてください。

4

1 に答える 1

1
var updateInfos =
 from XmlNode childNode in node.ChildNodes
 let key = childNode.Attributes["key"].Value
 join keysValue in configParameters on key equals keysValue.Key
 select new { childNode, keysValue.Value };

これにより、2 つのコレクションが効率的に結合されます。今、私たちは更新します:

foreach (var updateInfo in updateInfos)
 updateInfo.childNode.Attributes["value"].Value = updateInfo.Value;

関数型 LINQ クエリでできる限り多くのことを行います。次に、を使用して更新しforeachます。クエリとミューテーションをできるだけ分離すると便利です。クエリ部分に LINQ を使用foreachし、ミューテーションに使用します。

于 2013-10-03T12:40:29.680 に答える