2007年12月25日

Linq to XML その3

   このエントリーをはてなブックマークに追加 Clip to Evernote
Linq to XML その1
Linq to XML その2

こんどは、ソートです。
年齢順にソートしてみましょう。

今回も、クエリ式を使ったものと、そうでないものを示します。

XDocument xdoc = XDocument.Load("people.xml");
var sortedPeople = xdoc.Root.Elements().OrderBy(p => (int)p.Element("Age"));
foreach (var xperson in sortedPeople) {
XElement xname = xperson.Element("Name");
XElement xage = xperson.Element("Age");
Console.WriteLine(xname.Value + ":" + xage.Value + "歳");
}


まず、OrderByメソッドでソートしてから、
forearchで順に表示しています。

クエリ式の場合は、

XDocument xdoc = XDocument.Load("people.xml");
var query = from xperson in xdoc.Root.Elements()
orderby (int)xperson.Element("Age")
select new {
Name = xperson.Element("Name").Value,
Age = (int)xperson.Element("Age")
};
foreach (var p in query)
Console.WriteLine(p.Name + ":" + p.Age + "歳");


となります。
やはり、orderby演算子を使って、ソートしています。
逆順にソートする場合は、

orderby (int)xperson.Element("Age") descending


と書けばOKです。


この記事へのコメント
LINQ to XMLその4
http://blog.livedoor.jp/gushwell/archives/51314352.html
Posted by LINQ to XMLその4 at 2008年04月19日 20:13
 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/51313050