Asp.net 如何使用LINQ查询过滤包含特定子字符串的一个属性/字段的XML元素?

Asp.net 如何使用LINQ查询过滤包含特定子字符串的一个属性/字段的XML元素?,asp.net,attributes,linq-to-xml,filtering,substring,Asp.net,Attributes,Linq To Xml,Filtering,Substring,例如: <Item name="item1"> <mode = "ax, bx" /> </Item> <Item name="item2"> <mode = "bx, cx" /> </Item> <Item name="item3"> <mode = "cx, dx" /> </Item> 在上面的示例中,我想提取所有模式包含cx的项 提前谢谢 如果XML模式

例如:

<Item name="item1">
    <mode = "ax, bx" />
</Item>
<Item name="item2">
    <mode = "bx, cx" />
</Item>
<Item name="item3">
    <mode = "cx, dx" />
</Item>
在上面的示例中,我想提取所有模式包含cx的项


提前谢谢

如果XML模式是一个元素名,则可以将其设置为一个字符串,但您应该能够执行类似的操作,假设您匹配的字符串是元素值:

doc.Descendants("Item").Where( item => item.Elements("mode").Any( mode => mode.Value.Contains("cx")));

如果XML模式是一个元素名,您可以将其设置为一个字符串,但您应该能够执行类似的操作,假设您匹配的字符串是元素值:

doc.Descendants("Item").Where( item => item.Elements("mode").Any( mode => mode.Value.Contains("cx")));

示例中的XML格式不正确。假设你的意思是:

<Items>
  <Item name="item1">
    <mode>ax, bx</mode>
  </Item>
  <Item name="item2">
    <mode>bx, cx</mode>
  </Item>
  <Item name="item3">
    <mode>cx, dx</mode> 
  </Item>
</Items>

示例中的XML格式不正确。假设你的意思是:

<Items>
  <Item name="item1">
    <mode>ax, bx</mode>
  </Item>
  <Item name="item2">
    <mode>bx, cx</mode>
  </Item>
  <Item name="item3">
    <mode>cx, dx</mode> 
  </Item>
</Items>

假设格式良好的XML文档:

<Items>
  <Item name="item1">
    <mode>ax, bx</mode>
  </Item>
  <Item name="item2">
    <mode>bx, cx</mode>
  </Item>
  <Item name="item3">
    <mode>cx, dx</mode> 
  </Item>
</Items>
输出:

item2
item3

假设格式良好的XML文档:

<Items>
  <Item name="item1">
    <mode>ax, bx</mode>
  </Item>
  <Item name="item2">
    <mode>bx, cx</mode>
  </Item>
  <Item name="item3">
    <mode>cx, dx</mode> 
  </Item>
</Items>
输出:

item2
item3

谢谢你的回答。在我看来,你们都是对的,所以我只选择第一个回答的,每个+1。谢谢你们的回答。在我看来,你们所有人都是对的,所以我只选择第一个回答的和+1。回答中的XML是什么?在编写查询时,它给了我错误。错误1找不到源类型“System.Collections.Generic.IEnumerable”的查询模式的实现找不到的地方。您是否缺少对“System.Core.dll”的引用或“System.Linq”的using指令?D:\RND\TinyMce\Default.aspx.cs 148 30 D:\RND\TinyMce\n这是一个包含XML的字符串。此外,查看您得到的错误,似乎您应该使用System.Linq添加;使用System.Xml.Linq;我已经添加了上述两个名称空间的引用。您的答案中的XML是什么?编写查询时出错。错误1找不到源类型“System.Collections.Generic.IEnumerable”的查询模式的实现找不到的地方。您是否缺少对“System.Core.dll”的引用或“System.Linq”的using指令?D:\RND\TinyMce\Default.aspx.cs 148 30 D:\RND\TinyMce\n这是一个包含XML的字符串。此外,查看您得到的错误,似乎您应该使用System.Linq添加;使用System.Xml.Linq;我已经添加了上述两个名称空间的引用。