Проблема с LINQ to XML - PullRequest
       7

Проблема с LINQ to XML

1 голос
/ 08 ноября 2011
У

есть XML-файл, подобный следующему:

    <Datasets>
  <package id="AD">
    <iff>LRC_AD_AMSADTEXPDR</iff>
  </package>
  <package id="AL">
    <iff>LRC_AL_CLINICALTCODE</iff>
    <iff>LRC_AL_PATALGHISTRY</iff>
    <iff>LRC_AL_PATALGYCODE</iff>
    <iff>LRC_AL_PATALLERGY</iff>
    <iff>LRC_AL_PATALRGYCHEKD</iff>
  </package>
  <package id="AT">    
    <iff>LRC_AT_PATALERT</iff>
    <iff>LRC_AT_PATALRTCARE</iff>
    <iff>LRC_AT_PATALRTCODE</iff>
    <iff>LRC_AT_PATALRTDIST</iff>
    <iff>LRC_AT_PATALRTHIST</iff>
    <iff>LRC_AT_PATALRTSTAT</iff>
  </package>
  <package id="CDC">
    <iff>LRC_CDC_IFMFMCOMMENT</iff>
    <iff>LRC_CDC_IFMFORM</iff>
    <iff>LRC_CDC_IFMFRMCNTXT</iff>
    <iff>LRC_CDC_IFMFRMDATA</iff>
    <iff>LRC_CDC_IFMFRMDISDET</iff>
    <iff>LRC_CDC_IFMFRMHIMREF</iff>
    <iff>LRC_CDC_IFMFRMKEYWRD</iff>
    <iff>LRC_CDC_IFMFRMOBSRER</iff>
    <iff>LRC_CDC_IFMFRMPLCY</iff>
    <iff>LRC_CDC_IFMFRMRCPNT</iff>
    <iff>LRC_CDC_IFMFRMREF</iff>
    <iff>LRC_CDC_IFMFRMSTAHST</iff>
  </package>
    </Datasets>

Я использую .NET 3.5 для создания приложения, которое будет иметь выпадающий список и элемент управления флажка.В поле со списком будут перечислены все пакеты (например, AD, AL, AT и т. Д.), При выборе которых соответствующие элементы iff должны быть связаны с флажком selectedlist.

Я успешно выполнил связывание со списком следующего кода:

var pkgs = from s in xmlDoc.Descendants("package")
                       where s.HasAttributes && s.Attribute("id") != null &&
                        !String.IsNullOrEmpty(s.Attribute("id").Value)
                       select s.Attribute("id").Value;

            List<string> lst = pkgs.ToList();

            comboBox1.DataSource = lst;

Когда пользователь выбирает пакет из выпадающего списка, в событии combInox selectedIndexChange я хочу повторно получить соответствующие дочерние элементы этого пакета и привязать его к установленному списку.

Однако яневозможно выбрать дочерние узлы (iffs) выбранного пакета с помощью LINQ.

Любая помощь очень ценится!

Спасибо

1 Ответ

0 голосов
/ 08 ноября 2011

Синтаксис Linq для получения "iffs" может выглядеть примерно так:

var package = xmlDoc.Descendants("package").SingleOrDefault(s => s.HasAttributes && s.Attribute("id") != null && s.Attribute("id").Value == myPackage); // myPackage is the selected package

if (package == null)
    return null;

return package.Descendants("iff").Select(x => x.Value);

Это то, что вы ищете?

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