オブジェクト値に基づいて更新されているXMLコードがあります。ここでの 'foreach'ループは、200kbのxmlファイルを取得するためにほぼ12-15分かかります。パフォーマンスをどのように向上させるかをお勧めします。私はより良いアプローチは、C#クラスにXMLをデシリアライズすることだと思うオブジェクトにLinqのパフォーマンスの問題がより多くの時間を取る
IEnumerable<XElement> elements = xmlDoc.Descendants();
foreach (DataSource Data in DataLst)
{
XElement xmlElem = (from xmlData in elements
where Data.Name == xmlData.Name.LocalName //Name
&& Data.Store == xmlData.Element(XName.Get("Store", "")).Value
&& Data.Section == xmlData.Element(XName.Get("Section", "")).Value
select xmlData.Element(XName.Get("Val", ""))).Single();
xmlElem.ReplaceWith(new XElement(XName.Get("Val", ""), Data.Value));
}
xmlData.Element(XName.Get( "XYZ"、 "")) 'はxmlData.Element(" XYZ ")' 。はるかに読みやすい。 –
これは、すべてのファイルを*フェッチするものではありません。しかしタイミングは非常に奇妙なように思えます。短くて完全なプログラムでこれを再現できますか? (わかりやすくするために、単に 'XName.Get'ではなく' XName'に文字列変換を使用するだけです。) –