LINQ to XML的问题

时间:2011-11-08 08:48:48

标签: xml linq linq-to-xml

有一个像这样的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创建一个具有组合框和checkedlistbox控件的应用程序。 组合框将在选择相应的iff元素应绑定到checkedlistbox时列出所有包(如AD,AL,AT等)。

我成功地使用以下代码绑定了组合框:

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;

当用户从下拉列表中选择包时,在组合框的selectedIndexChange事件中,我想要查找该包的相应子元素并将其绑定到选中的列表框。

但是,我无法使用LINQ选择所选包的子节点(iffs)。

非常感谢任何帮助!

由于

1 个答案:

答案 0 :(得分:0)

检索“iffs”的Linq语法可能是这样的:

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

这是你在找什么?