gpt4 book ai didi

c# - LINQ:根据属性值从 XML 中删除元素?

转载 作者:数据小太阳 更新时间:2023-10-29 01:46:12 25 4
gpt4 key购买 nike

如何根据匹配的属性值删除 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com