"context instance" 对于 XElement linq to XML 使用 where 子句的查询
"context instance" for a XElement linq to XML query using a where clause
我想 return XElement 集合中的字符串值列表,但在构建我的代码时出现此错误,并且没有看到我遗漏了什么。
这是我写的关于这个问题的 class 的一部分:
private XElement _viewConfig;
public ViewConfiguration(XElement vconfig)
{
_viewConfig = vconfig;
}
public List<string> visibleSensors()
{
IEnumerable<string> sensors = (from el in _viewConfig
where el.Attribute("type").Value == "valueModule"
&& el.Element.Attribute("visible") = true
select el.Element.Attribute("name").Value);
return sensors.ToList<string>();
}
XElement 集合的形式为
<module name="temperature" type="valueModule" visible="true"></module>
<module name="lightIntensity" type="valueModule" visible="true"></module>
<module name="batteryCharge" type="valueModule" visible="true"></module>
<module name="VsolarCells" type="valueModule" visible="false"></module>
首先 XElement
不是 IEnumerable
因此第一行 from el in _viewConfig
无效。如果这是来自有效的 XML 文件,我假设 <module>
元素包含在父元素中(例如,<modules>
)。如果你让 _viewConfig
指向 modules
那么下面的方法会起作用:
IEnumerable<string> sensors = (
from el in _viewConfig.Elements()
where el.Attribute("type").Value == "valueModule"
&& el.Attribute("visible").Value == "true"
select el.Attribute("name").Value);
另请注意,el
的类型是 XElement
,因此它没有名为 Element
的 属性,我也从上面删除了它(连同我必须修复的几个语法错误:使用 ==
而不是 =
进行比较,并使用字符串文字 "true"
而不是布尔值 true
来比较属性的值文本值)。
我想 return XElement 集合中的字符串值列表,但在构建我的代码时出现此错误,并且没有看到我遗漏了什么。
这是我写的关于这个问题的 class 的一部分:
private XElement _viewConfig;
public ViewConfiguration(XElement vconfig)
{
_viewConfig = vconfig;
}
public List<string> visibleSensors()
{
IEnumerable<string> sensors = (from el in _viewConfig
where el.Attribute("type").Value == "valueModule"
&& el.Element.Attribute("visible") = true
select el.Element.Attribute("name").Value);
return sensors.ToList<string>();
}
XElement 集合的形式为
<module name="temperature" type="valueModule" visible="true"></module>
<module name="lightIntensity" type="valueModule" visible="true"></module>
<module name="batteryCharge" type="valueModule" visible="true"></module>
<module name="VsolarCells" type="valueModule" visible="false"></module>
首先 XElement
不是 IEnumerable
因此第一行 from el in _viewConfig
无效。如果这是来自有效的 XML 文件,我假设 <module>
元素包含在父元素中(例如,<modules>
)。如果你让 _viewConfig
指向 modules
那么下面的方法会起作用:
IEnumerable<string> sensors = (
from el in _viewConfig.Elements()
where el.Attribute("type").Value == "valueModule"
&& el.Attribute("visible").Value == "true"
select el.Attribute("name").Value);
另请注意,el
的类型是 XElement
,因此它没有名为 Element
的 属性,我也从上面删除了它(连同我必须修复的几个语法错误:使用 ==
而不是 =
进行比较,并使用字符串文字 "true"
而不是布尔值 true
来比较属性的值文本值)。