我正在爲這種排序而苦苦掙扎,需要一點幫助。使用LINQ排序
我將按排名排序子節點並保存它。 例如要訂購主要元素內的子節點,我將傳遞特定部分的ID。
這個例子只適用於第一後裔,現在我堅持下去。
XElement x = XElement.Load(xmlString1);
x.Descendants("opt").First().ReplaceNodes(x.Descendants("opt").First()
.Descendants("sel").OrderBy(o => int.Parse(o.Attribute("rank").Value)));
4x.Save(xmlString2);
我需要那樣。
x.Descendants("sub").Where(b => b.Attribute("id").Value == "DFG")
.ReplaceNodes(x.Descendants("opt").First()
.Descendants("sel").OrderBy(o => int.Parse(o.Attribute("rank").Value))
原始
<main id="AFB" rank="1" name="ROOT">
<sub id="DFG" rank="2" name="SUB1">
<att >
<sel id="JIK" rank="4" name="444" />
<sel id="OKI" rank="2" name="222" />
</att>
<opt>
<sel id="JIK" rank="2" name="122" />
<sel id="OKI" rank="1" name="111" />
</opt>
</sub>
<sub id="EGG" rank="1" name="SUB2" >
<opt>
<sel id="DJI" rank="1" name="111" />
<sel id="LOW" rank="3" name="333" />
<sel id="QWE" rank="2" name="222" />
</opt>
</sub>
<main>
目標
<main id="AFB" rank="1" name="ROOT">
<sub id="EGG" rank="1" name="SUB2" >
<opt>
<sel id="DJI" rank="1" name="111" />
<sel id="QWE" rank="2" name="222" />
<sel id="LOW" rank="3" name="333" />
</opt>
</sub>
<sub id="DFG" rank="2" name="SUB1">
<att >
<sel id="OKI" rank="2" name="222" />
<sel id="JIK" rank="4" name="444" />
</att>
<opt>
<sel id="OKI" rank="1" name="111" />
<sel id="JIK" rank="2" name="122" />
</opt>
</sub>
<main>
我編輯您的文章,以正確地格式化代碼,使其可讀。但'4x.Save(xmlString2);'在那裏,編輯時我不更改* code *。這是一個錯字嗎? –
你嘗試過遞歸嗎? – slawekwin