如何根据匹配的属性值删除 xml 中的任何元素?
这是我的 XML:
<Projects>
<Project serverUrl="tcp://xyz1:xxx/sdfsdf.rem" projectName="project1" />
<Project serverUrl="tcp://xyz2:xxx/sdfsdf.rem" projectName="project2" />
<Project serverUrl="tcp://xyz3:xxx/sdfsdf.rem" projectName="project3" />
<Project serverUrl="tcp://xyz4:xxx/sdfsdf.rem" projectName="project4" />
<Project serverUrl="tcp://xyz5:xxx/sdfsdf.rem" projectName="project5" />
<Project serverUrl="tcp://xyz6:xxx/sdfsdf.rem" projectName="project6" />
</Projects>
我正在使用以下 LINQ 查询:
var remove = from elemet in xdoc.Elements("Projects").Elements("Project")
where elemet.Attribute("projectName").Value == "project1"
select elemet.Parent.Remove();
我在选择为时遇到编译时错误:
The type of expression in select clause is Incorrect
编辑答案: 这个对我有用。谢谢大家
var xElement = (from elemet in xdoc.Elements("Projects").Elements("Project")
where elemet.Attribute("projectName").Value == foundProject
select elemet);
xElement.Remove();
最佳答案
Remove
是一个 (void) 方法调用,而不是一个可以返回值的函数。你可能想要这样的东西:
var elementsToRemove = from elemet in xdoc.Elements("Projects").Elements("Project")
where elemet.Attribute("projectName").Value == "project1"
select elemet;
foreach (var e in elementsToRemove)
e.Remove();
LINQ 是一种查询 语言,它(主要)用于返回 某些内容。对这些元素执行操作通常是一个单独的步骤。
关于c# - LINQ:根据属性值从 XML 中删除元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5004481/