【发布时间】:2013-09-05 17:41:42
【问题描述】:
我使用 Linq to XML 已经有一段时间了,但离它的高级用户还很远。每隔一段时间,我都会查看我的代码并说,“必须有一种更有效的方法来做到这一点”,所以我想看看 StackOverflow 的世界是否知道一种改进以下内容的方法代码。正在完成的工作是向该方法提供一个简单的List<string>,其中包含要从 XML 文件中保存的系统记录中删除的软件列表。
var xe = (from el in mainForm.xeSystemData.Elements("System")
where el.Element("Name").Value == systemName
select el.Element("SoftwareList"));
foreach (string sw in softwareToRemove)
{
foreach (var v in xe.Elements("Software"))
{
if (v.Value.ToString() == sw)
{
v.Remove();
}
}
}
这是 XML 的 sn-p 供参考:
<SoftwareList>
<Software>IBM Client Access</Software>
<Software>Adobe Acrobat Reader 10.1</Software>
</SoftwareList>
我一直在想,有一种更快的方法可以利用 Linq to XML 删除选择性元素,而无需创建两个 foreach 循环。
【问题讨论】: