这是我的Xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<dati>
<product id="456">
<item>a</item>
<item>b</item>
<item>c</item>
</product>
<product id="789">
<item>a</item>
<item>b</item>
</product>
<product id="533">
<item>a</item>
</product>
</dati>
下面的代码只返回第一个item.InnerText元素
List<string> lst = new List<string>();
XDocument Doc = XDocument.Load("test.xml");
var q = from c in Doc.Descendants("product")
where c.Attribute("id").Value == "789"
select c.Element("item");
foreach (string name in q)
lst.Add(name);
listBox1.DataSource = lst;
如何收集所选产品的所有商品?
答案 0 :(得分:7)
不确定
var list = Doc.Descendants("product")
.Single(c => c.Attribute("id").Value == "789")
.Elements("item")
.Select(item => (string) item)
.ToList();
请注意,这采用了稍微不同的方法 - 它检查是否只有一个匹配的产品元素(通过查找它),然后选择其下面的item
元素,将每个元素投影到其值。然后它以相当简洁的方式将这些字符串转换为列表:)