LINQ多列

时间:2011-12-22 08:18:17

标签: c# xml linq foreach linq-to-xml

<root>
    <data1>
        <Element1>Value</Element1>
        <Element2>Value</Element2>
        <Element3>Value</Element3>
    </data1>
    <data2>
        <Element1>Value</Element1>
        <Element2>Value</Element2>
    </data2>
</root>

从上面的XML中我想制作一个如下所示的XML:

<root>
    <d1e1>value<d1e1>
    <d1e2>value<d1e2>
    <d2e1>value<d2e1>
</root>

最有效的处理方式是什么? 在理论上,Foreq或Linq在大多数情况下Linq应该更快,速度是这个项目的关键

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这个想法只是从Y池中选择X节点,这里的示例被简化以显示问题。一般情况下,我有一个多级xml,我需要平坦只有一个子级(又名root + level1),但从源代码我只需要有一些我感兴趣的元素。

无论如何,这个问题已经解决了,因为我是用foreach完成的,因为我发现如果你在xml中指定了一个shema但是无法访问LINQ剂量,无论如何都要工作。

解决方案是这样的:

  1. 我做了一个功能:

    public System.Xml.XmlElement GetSubElement(XmlElement Parent, string element)
    {
     System.Xml.XmlElement ret = null;
     if (Parent == null)
      return ret;
    
     XmlNodeList ContentNodes = Parent.GetElementsByTagName(element);
     if (ContentNodes.Count > 0)
     {
      XmlNode node = ContentNodes.Item(0);
      ret = (XmlElement)node;
     }
    
     return ret;
    }
    
  2. 我在重复的区域做了一个foreach循环

  3. 我得到了具有上述功能的重复上下文中的元素。

  4. 无论如何,它为我解决了。

    编辑: 不知道如何使这段代码正确显示cos Ctrl + K似乎就是这样做