上次写了篇《Linq To Xml 增删改查》 自以为对Linq To Xml差不多入门了,结果实际工作中遇到一个简单的子级查询就绊住了。 园子里高人比较多,帮我写句很经典的Linq语句,让体验到Linq的强大与高深。 先看这句经典代码吧


上次写了篇Linq To Xml 增删改查

自以为对Linq To Xml差不多入门了,结果实际工作中遇到一个简单的子级查询就绊住了。

园子里高人比较多,帮我写句很经典的Linq语句,让体验到Linq的强大与高深。

先看这句经典代码吧。

Linq To Xml一句入门_lambda表达式Linq To Xml一句入门_xml_02大气象


string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?><root>"

    + "<room><id>1</id><people><name>张三1</name></people>"

    + "<people><name>张三2</name></people></room><room><id>2</id><people><name>李四1</name></people>"

    + "<people><name>李四2</name></people></room></root>";

var obj = XDocument.Parse(xml).Descendants("room")

    .Where(w => w.Elements("id").Any(a => (int)a == 1))

    .SelectMany(s => s.Elements("people"));

foreach (var info in obj)

{

    Response.Write(info + "<br />");

}

/*

    * 1.Parse()  从字符串创建XDocument

    * 2.Descendants("xname");  按XName筛选子元素集合

    * 3.Lambda表达式“=>”

    *  其实和2.0中的匿名方法差不多,都是用于产生内联方法,只不过Lambda表达式的语法更为简洁。

    *  语法如下:(参数列表) => 表达式或者语句块

    * 4.Any()  用于判断集合中是否有元素满足某一条件;

    * 5.SelectMany()  Select选择(一对多);延迟

    */


Linq语法真的挺好玩,但是有不少人告诉我学Linq用处不大。没办法,用到什么就学什么吧。

这是我的提问:Linq To Xml查询指定父级下面的所有子级。