c# - "where"使用 linq xml 查询

标签 c# xml linq

一直在绞尽脑汁想弄清楚如何执行 linq xml 查询。

我希望查询返回以下 xml 中类别/名称 =“第一类别”的所有“产品”项目的列表

<catalog>
  <category>
    <name>First Category</name>
    <order>0</order>
    <product>
      <name>First Product</name>
      <order>0</order>
    </product>
    <product>
      <name>3 Product</name>
      <order>2</order>
    </product>
    <product>
      <name>2 Product</name>
      <order>1</order>
    </product>
  </category>
</catalog>

最佳答案

像这样:

    XDocument doc = XDocument.Parse(xml);
    var qry = from cat in doc.Root.Elements("category")
              where (string)cat.Element("name") == "First Category"
              from prod in cat.Elements("product")
              select prod;

或者也可能使用匿名类型:

    XDocument doc = XDocument.Parse(xml);
    var qry = from cat in doc.Root.Elements("category")
              where (string)cat.Element("name") == "First Category"
              from prod in cat.Elements("product")
              select new
              {
                  Name = (string)prod.Element("name"),
                  Order = (int)prod.Element("order")
              };
    foreach (var prod in qry)
    {
        Console.WriteLine("{0}: {1}", prod.Order, prod.Name);
    }

关于c# - "where"使用 linq xml 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1125093/

相关文章:

c# - 我的 visual studio 插件如何在构建之前以与 "Remove and Sort Usings"相同的方式检测编译器错误?

c# - 尝试将数字格式化为百分比

c# - Kendo Grid Filter 对于日期列不能正常工作

java - 解析 xml ...我认为这个问题。是关于编码的

xml - 如何选择除特定元素之外的特定元素的所有兄弟元素

c# - Lambda 检查列表是否包含所有属性的某些属性值

c# - Linq group by 多表和内连接

c# - 将字符串转换为 TimeSpan

xml - XPath 和 Jabber-RPC

c# - 在 Linq To SQl .net 3.5 中调用函数