は私が前にこのから私のforeachループをリファクタリング私は方法を知らない。私を啓発してください。多分LINQリファクタリング
selected.ForEach(x => (mainNode.SetAttribute("name", x.Key)));
selected.ForEach(x => (mainNode.SetAttribute("value", x.Value)));
は私が前にこのから私のforeachループをリファクタリング私は方法を知らない。私を啓発してください。多分LINQリファクタリング
selected.ForEach(x => (mainNode.SetAttribute("name", x.Key)));
selected.ForEach(x => (mainNode.SetAttribute("value", x.Value)));
のようなもの、私はあなたと同じ結果を得ることができると思います。
paramsList.ToList().ForEach(e => {
XmlElement mainNode = xmlDoc.CreateElement("parameter");
mainNode.SetAttribute("name", e.Key);
mainNode.SetAttribute("value", e.Value);
rootNode.AppendChild(mainNode);
});
しかし、この場合には、私はシンプルなforeach
を選ぶだろう。
foreach (var e in paramsList)
{
XmlElement mainNode = xmlDoc.CreateElement("parameter");
mainNode.SetAttribute("name", e.Key);
mainNode.SetAttribute("value", e.Value);
rootNode.AppendChild(mainNode);
}
私は..あなたがすでにそれを行うことができるので参照してください。あなたのコードを見れば、私は簡単なforeachループを選択できました。これは単純なforeachループと比較して私はGeneric.List
この
selected.ForEach(x =>
{
mainNode.SetAttribute("name", x.Key);
mainNode.SetAttribute("value", x.Value);
});
XmlDocumentからXDocumentに切り替えることができますか? LINQ to XMLは、LINQとはるかに良く統合されています。
var nodes = from pair in paramsList
select new XElement("parameter",
new XAttribute("name", pair.Key),
new XAttribute("value", pair.Value));
これは、ドキュメントにノードを追加したり、XDocumentのコンストラクタなどに渡したりすることを除いては同じです。
編集:明確にするためには、あなたの質問には、「linqtoxmlを」タグ付けされていますが、XMLにLINQは、XDocument、XElementオブジェクト、およびXAttributeなどSystem.Xml.Linq名前空間のクラスの特定のセットを意味します。サンプルコードでは実際のLINQ to XMLクラスは使用されていません.LINQを使用してXMLをビルドする場合は、実際のLINQ to XMLクラスがXmlDocumentやフレンドより優れたサービスを提供することをお勧めします。
ではありません: (param => param) を選択しますか? –
また、元のコードでは、paramsListの要素と同じ数の "parameter"要素が生成されますが、リファクタリングされたコードは常に "name"と "value"属性がlength(paramsList)それに時間。私はそれが正しくリファクタリングされているとは思わない。 –
ええ、あなたは絶対に正しいです。とにかく、私はちょうどbruno condeのコードにコメントしました。そして今はidは私の既存のforeachループを置き換えません。 – grayman