在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 !

在c#中使用LINQ查询XML文件

如果我使用下面的代码:

  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();