【发布时间】:2019-10-31 04:47:22
【问题描述】:
<bus>
<port>
<req>
<item>
[...]
</item>
</req>
[...]
<req>
<item>
[...]
</item>
</req>
</port>
[...]
<port>
<req>
<item>
[...]
</item>
</req>
[...]
<req>
<item>
[...]
</item>
</req>
</port>
</bus>
<bus>
[...] (same as before)
</bus>
我有这个结构;所有的结构都会重复。我需要选择总线的最后一个端口元素,该元素的最后一个子元素具有属性“mode”=="read"。
它可以存在一个总线,它的最后一个端口元素和最后一个子元素的属性不同于“读取”,所以我需要选择正确的端口元素。
我尝试了很多次,最后一个是这个,但不起作用:
var modbusportSelected = Elements("bus").Elements("port")
.Where( x => x.Elements("req")
.Any(y => y.Attribute("mode").Value.Contains("read")))
.Last();
任何帮助将不胜感激;另外,我对 LINQ to XML 完全陌生,我找不到一个网页来获取“任何”的确切含义,以及是否有其他运算符,如果有,它们是什么。
【问题讨论】:
-
Any 只返回一个布尔值,条件是在 any 方法中设置的。在您的情况下,您是说是否有任何模式属性的值包含 read。
-
谢谢!你还知道我在哪里可以找到关于 Any 和其他运营商的一些不错的文档吗?
标签: c# linq linq-to-xml