伙计们来了,我知道这对你们所有人来说似乎都是一个结束,但我未能实现我想要的目标。我的linq查询
XDocument doc = XDocument.Load(@"E:\OBJECT ORIENTED DEV'T\file.xml");
XElement root = doc.Root;
var items = from item in doc.Descendants("ModuleSchedule")
.Descendants("ModuleTimeTable")
where item.Attribute("Module_ID").Value.Equals("001")
select new
{
ModuleId = item.Attribute("Module_ID").Value, //works fine
Slots = item.Attribute("Day").Value //Not sure how to achieve this
Slots = item.Attribute("Time").Value // Not sure how to achieve this
};
GridView1.DataSource = items;
GridView1.DataBind();
这是我的XML结构
<?xml version="1.0" encoding="utf-8"?>
<ModuleSchedule>
<ModuleTimeTable Module_ID="001" ModuleName="Module Name 1">
<Slot Day="Monday" Time="09:30"/>
<Slot Day="Tuesday" Time="14:30"/>
<Slot Day="Fridayday" Time="09:30"/>
<Slot Day="Saturday" Time="12:30"/>
</ModuleTimeTable>
<ModuleTimeTable Module_ID="002" ModuleName="Module Name 2">
<Slot Day="Monday" Time="09:30"/>
<Slot Day="Tuesday" Time="14:30"/>
<Slot Day="Fridayday" Time="09:30"/>
<Slot Day="Saturday" Time="12:30"/>
</ModuleTimeTable>
<ModuleTimeTable Module_ID="003" ModuleName="Module Name 3">
<Slot Day="Monday" Time="09:30"/>
<Slot Day="Tuesday" Time="14:30"/>
<Slot Day="Fridayday" Time="09:30"/>
<Slot Day="Saturday" Time="12:30"/>
</ModuleTimeTable>
我想检索与模块ID关联的所有插槽,将它们放在gridview表中,如日期和时间。
谢谢
答案 0 :(得分:1)
而不是
doc.Descendants("ModuleSchedule")
.Descendants("ModuleTimeTable")
只需使用doc.Descendants("ModuleTimeTable")
或doc.Root.Elements("ModuleTimeTable")
此外,您可能希望在获取属性或元素的值时使用显式强制转换,以避免可能的异常:
var items = from item in doc.Descendants("ModuleTimeTable")
where (string)item.Attribute("Module_ID") == "001"
select new
{
ModuleId = (int) item.Attribute("Module_ID"),
Day = (string) item.Element("Slot").Attribute("Day"),
Time = (string) item.Element("Slot").Attribute("Time")
};