在c#中使用LINQ查询XML文件
本文关键字:查询 XML 文件 LINQ | 更新日期: 2023-09-27 17:53:37
我有一个LINQ查询我的XML文件,它看起来像这样
IEnumerable<XElement> c = from cli in xEl.Elements(ns + "client")
where cli.Element(ns+"ID").Value == (((Client)cComboBox.SelectedItem).Id +"")
select cli;
它工作得很好…接下来我想迭代这个数据所以我执行
foreach (XElement el in c)
{
}
我的XML文件看起来像这样
<client>
<ID>1</ID>
<name>Andrej</name>
通过迭代,我想提取客户端的值(id -> 1, name -> Andrej)
我猜是把el.Element("name").Value
放在循环的中间,但这不起作用…哦,顺便说一句:我在c#中做这个…
我该怎么办?
btw2:正如你所看到的,我是linq的新手,所以我想我在这个问题上偏离了轨道…
任何帮助将不胜感激!!TNX !
如果我使用下面的代码:
public void Run()
{
string fileToLoad = this.GetType().Name + ".xml";
XElement root = XElement.Load(fileToLoad);
var selected = from cli in root.Elements("client")
where cli.Element("ID").Value == "1"
select cli;
System.Console.WriteLine("Selected:");
foreach (var d in selected)
Console.WriteLine("{0}", d.ToString());
System.Console.WriteLine("'nitems:");
foreach (var d in selected)
{
Console.WriteLine("id: {0}", d.Element("ID"));
}
}
这个源数据:
<root>
<client>
<ID>1</ID>
<name>Andrej</name>
</client>
<client>
<ID>2</ID>
<name>William</name>
</client>
<client>
<ID>3</ID>
<name>Kate</name>
</client>
</root>
然后……我得到这样的结果:
Selected:
<client>
<ID>1</ID>
<name>Andrej</name>
</client>
items:
id: <ID>1</ID>
您可以在一个语句中完成。我是在改写你的话。只有select会改变。
var nameIdList = (from cli in client
where cli.ID == ID
select new { id=cli.ID, name=cli.name }).ToList();