2008年01月07日

Linq to XML その5

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

ちょっと間が空いてしまいましたが、Linq to SQL の勉強を再開しました。

では、今度は、40歳以上の人を抜き出してみましょう。

XDocument xdoc = XDocument.Load("people.xml");
foreach (var xperson in xdoc.Root.Elements()) {
int age = (int)xperson.Element("Age");
if (age >= 40) {
XElement xname = xperson.Element("Name");
XAttribute xreal = xperson.Attribute("IsReal");
Console.WriteLine(xname.Value + ":" + ((bool)xreal ? "実在の人物":"架空の人物"));
}
}


クエリ式では

XDocument xdoc = XDocument.Load("people.xml");
var query = from xperson in xdoc.Root.Elements()
where (int)xperson.Element("Age") >= 40
select new {
Name = xperson.Element("Name").Value,
IsReal = (bool)xperson.Attribute("IsReal")
};
foreach (var p in query)
Console.WriteLine(p.Name + ":" + (p.IsReal ? "実在の人物":"架空の人物"));


Linq to Object とほぼ同じ思考でコードが書けるのはイイですね。
前者の拡張メソッド方式も、クエリ式のように、Where, Selectを使って書けると思うのですが、時間がないのでパス。
気になる人は自分で確認してみてください。



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

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

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