Запрос LinqToXML - PullRequest
       18

Запрос LinqToXML

0 голосов
/ 02 апреля 2020

Мое приложение нуждается в обмене данными и восстановлении данных из файла. xml. Мой. xml файл

<?xml version="1.0" encoding="utf-8" ?>
<Postes>
  <Ligne ID ="1" Nom="SAVD">
    <Poste ID ="1">
      <Nom>CFL_D 1</Nom>
    </Poste>
    <Poste ID ="2">
      <Nom>CFL_D 2</Nom>
    </Poste>
    <Poste ID ="3">
      <Nom>CFL_D 3</Nom>
    </Poste>
    <Poste ID ="4">
      <Nom>CFL_D 4</Nom>
    </Poste>
    <Poste ID ="5">
      <Nom>CFL_D 5</Nom>
    </Poste>
    <Poste ID ="6">
      <Nom>S&amp;G_D 1</Nom>
    </Poste>
    <Poste ID ="7">
      <Nom>S&amp;G_D 2</Nom>
    </Poste>
  </Ligne>
  <Ligne ID ="2" Nom="SAVG">
    <Poste ID ="1">
      <Nom>CFL_G 1</Nom>
    </Poste>
    <Poste ID ="2">
      <Nom>CFL_G 2</Nom>
    </Poste>
    <Poste ID ="3">
      <Nom>CFL_G 3</Nom>
    </Poste>
    <Poste ID ="4">
      <Nom>CFL_G 4</Nom>
    </Poste>
    <Poste ID ="5">
      <Nom>CFL_G 5</Nom>
    </Poste>
    <Poste ID ="6">
      <Nom>S&amp;G_G 1</Nom>
    </Poste>
    <Poste ID ="7">
      <Nom>S&amp;G_G 2</Nom>
    </Poste>
  </Ligne>
  <Ligne ID ="2" Nom="SAR">
    <Poste ID ="1">
      <Nom>PT 1</Nom>
    </Poste>
    <Poste ID ="2">
      <Nom>PT 2</Nom>
    </Poste>
    <Poste ID ="3">
      <Nom>PT 3</Nom>
    </Poste>
    <Poste ID ="4">
      <Nom>PT 4</Nom>
    </Poste>
    <Poste ID ="5">
      <Nom>Finition 1</Nom>
    </Poste>
    <Poste ID ="6">
      <Nom>Finition 2</Nom>
    </Poste>
    <Poste ID ="7">
      <Nom>Finition 3</Nom>
    </Poste>
  </Ligne>
</Postes>

Я хотел бы перечислить рабочую станцию ​​(Poste) в соответствии с атрибутом «Nom» элемента «Ligne».

Когда я это сделаю:

var query = from data in xelement.Descendants("Poste")
                    select data.Element("Nom").Value;

Я восстанавливаю все имена рабочих станций.

CFL_D 1
CFL_D 2
CFL_D 3
CFL_D 4
CFL_D 5
S&G_D 1
S&G_D 2
CFL_G 1
CFL_G 2
CFL_G 3
CFL_G 4
CFL_G 5
S&G_G 1
S&G_G 2
PT 1
PT 2
PT 3
PT 4
Finition 1
Finition 2
Finition 3

Когда я делаю:

var query = from data in xelement.Descendants("Ligne")
                    where (string)data.Attribute("Nom").Value == "SAVD"
                    select data;

Я восстанавливаю следующий элемент:

<Ligne ID ="1" Nom="SAVD">
<Poste ID ="1">
  <Nom>CFL_D 1</Nom>
</Poste>
<Poste ID ="2">
  <Nom>CFL_D 2</Nom>
</Poste>
<Poste ID ="3">
  <Nom>CFL_D 3</Nom>
</Poste>
<Poste ID ="4">
  <Nom>CFL_D 4</Nom>
</Poste>
<Poste ID ="5">
  <Nom>CFL_D 5</Nom>
</Poste>
<Poste ID ="6">
  <Nom>S&amp;G_D 1</Nom>
</Poste>
<Poste ID ="7">
  <Nom>S&amp;G_D 2</Nom>
</Poste>

Но я не вижу, как объединить два запроса, чтобы восстановить имена элемента "poste", только когда атрибут строки отфильтрован.

Не могли бы вы объяснить мою ошибку?

...