【问题标题】:Linq to XML, find items which are in a specific categoryLinq to XML,查找特定类别中的项目
【发布时间】:2011-01-06 01:04:07
【问题描述】:

我有以下 XML 结构(来自执行得不太好的外部来源):

<items>
 <item>
   <allkindsofinfo></allkindsofinfo>
   <categories>
    <category>
     <name>cat1</name>
    </category>
    <category>
     <name>cat2</name>
    </category>
    <category>
     <name>cat3</name>
    </category>
   </categories>
  </item>
 <item>
  etcetera

大约有 150 个项目,它们都包含几个类别。

现在,使用 linq,我想获取某个类别中的所有项目。 我在 where 子句中尝试了以下内容:

item.Element("categories").Elements("category").Elements("name").ToString().Contains("cat2")

这不会返回任何结果,即使我知道它应该返回。

如果我尝试:

item.Element("categories").Element("category").Element("name").ToString().Contains("cat2")

如果类别名称是项目中的第一个,则返回结果。

如何遍历每个项目的类别名称以查看它是否包含某个字符串并过滤掉这些项目?

非常感谢任何帮助...:-)

【问题讨论】:

    标签: linq-to-xml where-clause


    【解决方案1】:

    where item.Element("categories").Elements("category").Elements("name").Any(n =&gt; n.Value = "cat2") 应该在 name 元素值应该是 cat2 的情况下准确。如果名称元素应该包含“cat2”作为子字符串,则使用where item.Element("categories").Elements("category").Elements("name").Any(n =&gt; n.Contains("cat2"))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多