有一个像这样的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)。
非常感谢任何帮助!
由于
答案 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);
这是你在找什么?