我有一个LINQ表达式,它从xml文件中获取XML属性值。
var xml = XElement.Load(@"C:\\StoreServer1.xml");
var query = from e in xml.Descendants("Groups")
where int.Parse(e.Element("Store").Value) == 1500
select e.Element("Store").Attribute("WeekDayStClose").Value;
xml文件是:
enter<?xml version="1.0" encoding="utf-8" ?>
<Stores>
<Groups Range="000">
<Store WeekDayStClose="210" SatStClose="21" SunStClose="22">1500</Store>
<Store WeekDayStClose="23" SatStClose="24" SunStClose="25">18</Store>
<Store WeekDayStClose="23" SatStClose="24" SunStClose="25">19</Store>
</Groups>
</Stores>
我只获取1500的第一个元素的属性result(value)。如果我搜索18的同一个东西,它不返回任何结果,也没有异常。任何帮助表示赞赏.... Plz帮助!!!
答案 0 :(得分:1)
您应该更精细,使用Descendants
(XName)调用子Store
:
var xml = XElement.Load(@"C:\\New Folder\\StoreServer1.xml");
var query = from e in xml.Descendants("Groups").Descendants("Store")
where int.Parse(e.Value) == 18
select e.Attribute("WeekDayStClose").Value;
因为现在您只检索Store
的每个Group
的 第一个 1500
。
答案 1 :(得分:1)
var xml = XElement.Load(@"C:\\StoreServer1.xml");
var query = xml.Descendants("Groups").Descendants("Store").Where(e => int.Parse(e.Value) == 18).Select(e=> e.Attribute("WeekDayStClose").Value);
答案 2 :(得分:0)
是的,您的代码中有一点错误: 您正在将xml拆分为组元素(您只有一个组)。然后检查第一个store元素是否具有值1500(您没有检查以下存储元素是否具有值1500)
您需要将代码更改为以下
var query = from e in xml.Descendants("Store")
where int.Parse(e.Value) == 1500
select e.Attribute("WeekDayStClose").Value;