我想从XElement集合返回一个字符串值列表,在构造代码时出现此错误,并且看不到我错过的内容。
这是我写过的关于这个问题的课程的一部分:
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>
答案 0 :(得分:2)
首先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
来比较属性文本值的值)。