【问题标题】:LINQ to XML select multiple elements?LINQ to XML 选择多个元素?
【发布时间】:2016-08-19 00:00:25
【问题描述】:

如何在LINQ to XML 查询中选择多个元素(具有不同名称)?

我有一个这样的查询:

var elems = from descendant in doc.Descendants("foo")
                            select descendant;

但我想同时选择 foo 和 bar,有点像这样:

var elems = from descendant in doc.Descendants("foo" || "bar")
                            select descendant;

但这只是为了说明我想要做什么,我知道这不是正确的语法。我不知道应该如何使用 LINQ to XML 来完成,那么正确的方法是什么?

【问题讨论】:

    标签: linq-to-xml


    【解决方案1】:

    您只能将一个XName 传递给这些方法。只需将它们放在外面,然后进行正常的 LINQ 过滤即可。

    var elems = doc.Descendants()
                   .Where(desc => desc.Name == "foo" || desc.Name == "bar");
    

    使用 XPath 是另一种方式。

    var elems = doc.XPathSelectElements("//foo|//bar");
    

    【讨论】:

      【解决方案2】:

      嗯,一个选择:

      var elems = doc.Descendants().Where(x => x.Name == (XName) "foo" ||
                                               x.Name == (XName) "bar");
      

      【讨论】:

      • @Anders:我认为他没有,实际上......我的答案 ID (4803662) 低于他的 (4803747)。但是,嘿,没关系:)(另见stackoverflow.com/posts/4803598/timeline
      • 好的,抱歉,从 SO 显示的那一刻起,它看起来相反,但无论如何再次感谢两者!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多