2011-01-05 21 views
2

xmlファイルを属性の値でソートしようとしました。linqのXML文書を属性値でソートする方法は?

data.Descendants("person").OrderBy(x => x.Attribute("id").Value); 

データが含まれていますhere与え

<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> 

回答が私のために動作しません。

私は任意の助けのために感謝されるのWindows Phone 7

ためMVS 2010を使用しています。

-

更新

迅速な応答をありがとう!

juharrが良い質問をしました...私はOrderBydataを修正すると予想していました。今私は間違っていたことを知っている。

私はdataを変更すると、次のように私は(感謝マット・レイシー)やった:

var people = data.Elements("person").OrderBy(p => (string)p.Attribute("id")); 

    data.Descendants("person").Remove(); 
    data.Element("persons").Add(people); 

を私はまだ何も得ませんでした。 Dataは空です、それだけが含まれています<persons />

私は今何が間違っているのだろうか。


私はこのコードを使用して私の問題を解決するために管理します。

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); 

を変更するには(よりエレガントな)他の方法であるdataOrderByを使用して代わりにdatatempを作成しますか?あなたがにリンクされている質問、この作品に基づいて

+1

あなたは「運がいい」より具体的になりますか? – fejesjoco

+2

'OrderBy'の結果をキャプチャしているのですか、それとも' data'を変更する予定ですか? – juharr

+0

これは古くからの質問です。しかし、Dimaによると、.ToList()または.ToArray()を追加することでdatatemp変数を回避できます。 'stuff.OrderBy(...).ToList()'は、人に追加するときにIEnumerableが空でないようにします。 – Mixxiphoid

答えて

1

var people = from p in data.Elements("person") 
      orderby (string)p.Attribute("id") 
      select p; 

または

var people = data.Elements("person").OrderBy(p => (string)p.Attribute("id")); 

は(あまりにも確認するために電話でテストされています。)

+0

これはint.sortのstring.sortでソートされますか? –

1

私はこれがあなたの役に立てば幸い

var people = data.Elements("person").OrderBy(p => (string)p.Attribute("id")).ToArray(); 

data.Descendants("person").Remove(); 
data.Element("persons").Add(people); 

Do not for peopleのToArray()メソッドを使用します。

関連する問題