Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq删除XML中的子节点_C#_Xml_Linq_Linq To Xml - Fatal编程技术网

C# 使用Linq删除XML中的子节点

C# 使用Linq删除XML中的子节点,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,我有一个XML文件,其中包含嵌套在父节点中的父节点和子节点列表,当满足特定条件时,我需要删除子节点。 例如:删除id=1的所有联系人节点。如何使用linq和xml实现这一点。这是我的XML结构 <Events> <Event> <id>1</id> <title>AA</title> <start>2019-12-01T14:13:58.863</start> <

我有一个XML文件,其中包含嵌套在父节点中的父节点和子节点列表,当满足特定条件时,我需要删除子节点。 例如:删除id=1的所有联系人节点。如何使用linq和xml实现这一点。这是我的XML结构

<Events>
 <Event>
    <id>1</id>
    <title>AA</title>
    <start>2019-12-01T14:13:58.863</start>
    <end>2019-12-01T15:13:58.787</end>
    <contacts>

      <contact>
        <id>1</id>
        <name>ABC</name>
      </contact>

      <contact>
        <id>2</id>
        <name>ABCD</name>
      </contact>

      <contact>
        <id>3</id>
        <name>ABCDE</name>
      </contact>

    </contacts>
 </Event>

<Event>
    <id>2</id>
    <title>BB</title>
    <start>2019-12-01T14:13:58.863</start>
    <end>2019-12-01T15:13:58.787</end>
    <contacts>

      <contact>
        <id>1</id>
        <name>ABC</name>
      </contact>

      <contact>
        <id>2</id>
        <name>ABCD</name>
      </contact>

      <contact>
        <id>3</id>
        <name>ABCDE</name>
      </contact>

    </contacts>
 </Event>
</Events>

1.
AA
2019-12-01T14:13:58.863
2019-12-01T15:13:58.787
1.
基础知识
2.
ABCD
3.
ABCDE
2.
BB
2019-12-01T14:13:58.863
2019-12-01T15:13:58.787
1.
基础知识
2.
ABCD
3.
ABCDE

您可以使用此查询获取XML节点

var query = xmlDoc.Descendants("contact").Where(e => e.Element("id").Value.Equals(id)).ToList();
然后跑

query.Remove()

删除返回的元素。

您可以使用此查询获取XML节点

var query = xmlDoc.Descendants("contact").Where(e => e.Element("id").Value.Equals(id)).ToList();
然后跑

query.Remove()

删除返回的元素。

正如Jon Skeet指出的,没有必要做任何深奥的事情。下面是一个完整的例子如何做到这一点。纯LINQ到XML

c#,LINQ到XML


正如乔恩·斯基特指出的那样,没有必要做任何深奥的事情。下面是一个完整的例子如何做到这一点。纯LINQ到XML

c#,LINQ到XML


你在林克已经试过什么了?得到的错误是什么?提示:从查找所有要删除的元素的查询开始。从这里开始,只需调用您在linq已经尝试过的内容即可?得到的错误是什么?提示:从查找所有要删除的元素的查询开始。从那以后,只需要打个电话