Ich habe versucht, meine XML-Datei mit dem Wert des Attributs ohne Glück zu sortieren.Wie XML-Dokument in Linq durch einen Attributwert zu sortieren?
data.Descendants("person").OrderBy(x => x.Attribute("id").Value);
Daten enthält:
<persons>
<person id="1">
<name>Abra</name>
<age>25</age>
</person>
<person id="2">
<name>Cadabra</name>
<age>29</age>
</person>
<person id="4">
<name>Hokus</name>
<age>40</age>
</person>
<person id="3">
<name>Pokus</name>
<age>30</age>
</person>
</persons>
Antwort here nicht für mich arbeiten.
Ich bin mit MVS 2010 für Windows Phone 7.
Ich würde für jede Hilfe dankbar.
-
aktualisieren
Vielen Dank für schnelle Antworten!
juharr eine gute Frage gestellt ... ich hatte erwartet, dass OrderBy
würde data
ändern. Jetzt weiß ich, dass ich falsch lag.
Ich möchte data
ändern, und ich getan habe, wie folgt (dank Matt Lacey):
var people = data.Elements("person").OrderBy(p => (string)p.Attribute("id"));
data.Descendants("person").Remove();
data.Element("persons").Add(people);
, aber ich habe immer noch nichts. Data
ist leer, es enthält nur <persons />
Ich frage mich, was jetzt falsch ist.
schaffe ich mein Problem zu lösen, indem Sie diesen Code verwenden:
XDocument datatemp = new XDocument(data);
var people = datatemp.Descendants("person").OrderBy(x => (int)int.Parse(x.Attribute("id").Value));
data.Descendants("person").Remove();
data.Element("persons").Add(people);
Ist eine andere Art und Weise (elegantere) zu modifizieren data
mit OrderBy
statt datatemp
zu schaffen?
Können Sie genauer über "kein Glück" sein? – fejesjoco
Erfassen Sie das Ergebnis der 'OrderBy' oder erwarten Sie, dass' data' verändert wird? – juharr
Ich weiß, das ist eine uralte Frage. Sie vermeiden jedoch die Variable datatemp durch Hinzufügen von .ToList() oder .ToArray(), wie Dima sagte. 'stuff.OrderBy (...). ToList()' verhindert, dass IEnumerable beim Hinzufügen zu Personen leer ist. – Mixxiphoid