LINQ 多列

发布于 2024-12-22 13:57:10 字数 646 浏览 1 评论 0原文

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

处理该问题最有效的方法是什么? Foreach 或 Linq 理论上在大多数情况下 Linq 应该更快,并且速度对于这个项目来说至关重要 有

什么想法吗?

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

From the above XML I would like to make an XML looking like this:

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

What is the most efficient way to process that?
Foreach or Linq in theory Linq should be faster in most cases and speed is of the essence for this project

Any idea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苏璃陌 2024-12-29 13:57:10

这个想法是从 Y 池中选择 X 节点,这里的示例经过简化以向您展示问题。一般来说,就像我有一个多级 xml,我需要将其展开为只有一个子级别(又名 root + level1),但从源头来看,我只需要拥有我感兴趣的某些元素。

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

解决方案是这样的:

  1. 我做了一个函数:

    public System.Xml.XmlElement GetSubElement(XmlElement Parent,字符串元素)
    {
     System.Xml.XmlElement ret = null;
     如果(父级==空)
      返回ret;
    
     XmlNodeList ContentNodes = Parent.GetElementsByTagName(element);
     if (ContentNodes.Count > 0)
     {
      XmlNode 节点 = ContentNodes.Item(0);
      ret = (XmlElement)节点;
     }
    
     返回ret;
    }
    
  2. 我在重复的区域上做了一个 foreach 循环

  3. 我得到了以下元素使用上述函数,在重复上下文之外。

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

编辑:
不知道如何让此代码正确显示,因为 Ctrl+K 似乎可以做到这一点

The idea was to just select X nodes out of a pool of Y and the example here is simplified to show you the problem. In general it is like that I have a multi level xml that I needed to flat out to only have one sublevel (aka root + level1) but from the source I only need to have certain elements that are of interest to me.

Anyway the issiue is solved cos I done it with foreach cos I found out that if you have an shema specified in the xml but not accessable LINQ dosent whant to work anyway.

the solution was like this:

  1. I made a function:

    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. I made a foreach loop on the area that was repeating

  3. I got the elements that where out of the repeating context with the above function.

Anyway that solved it for me.

Edit:
Don't know how to get this code to appear properly cos Ctrl+K dosent seem to do it

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文