【发布时间】:2011-09-05 13:31:51
【问题描述】:
我想从 XML 文件中获取一些值并使用 LINQ 将它们插入到 ListBox 中。我哪里错了?
<?xml version="1.0" encoding="UTF-8"?>
<tells>
<defindividual name="name1"/>
<instanceof>
<individual name="name1"/>
<catom name="value"/>
</instanceof>
<defindividual name="name2"/>
<instanceof>
<individual name="name2"/>
<catom name="value"/>
</instanceof>
<defindividual name="name3"/>
<instanceof>
<individual name="name3"/>
<catom name="otherValue"/>
</instanceof>
</tells>
代码隐藏:
protected void Button1_Click(object sender, EventArgs e)
{
XDocument owlXML = XDocument.Load(Server.MapPath("App_Data\\myFile.xml"));
var items = from item in owlXML.Descendants("instanceof")
where item.Element("catom").Attribute("name").Value == "value"
select new
{
catom = item.Element("catom").Attribute("name").Value
};
foreach (var item in items)
{
//ListBox1.DataSource = item;
//ListBox1.DataBind();
ListBox1.Items.Add(item.catom);
}
}
【问题讨论】:
-
问题是我的 ListBox1 总是空的。我尝试用 List 项目填充它并且它有效,但是当我尝试用 IEnumerable 项目填充它时没有任何反应。
-
我更新了我的答案,添加了
ToArray()。您也可以使用 `ToList() 但不需要由此产生的开销。
标签: c# asp.net linq .net-3.5 linq-to-xml