LINQ несколько столбцов - PullRequest
       9

LINQ несколько столбцов

0 голосов
/ 22 декабря 2011
<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 должен быть быстрее в большинстве случаев, и скорость имеет существенное значение для этого проекта

Есть идеи?

1 Ответ

0 голосов
/ 30 декабря 2011

Идея состояла в том, чтобы просто выбрать X узлов из пула Y, и приведенный здесь пример упрощен, чтобы показать вам проблему. В общем, у меня многоуровневый xml, который мне нужно было выровнять, чтобы иметь только один подуровень (он же root + level1), но из источника мне нужны только определенные элементы, которые меня интересуют.

Во всяком случае, проблема решена, потому что я сделал это с foreach, потому что я обнаружил, что если у вас есть XML-файл, указанный в xml, но не доступный, 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. Я получил элементы, которые вышли из повторяющегося контекста с помощью вышеуказанной функции.

В любом случае, это решило это для меня.

Edit: Не знаю, как заставить этот код отображаться правильно, потому что Ctrl + K делает это, похоже, делает это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...