Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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: <rewriteMaps> <rewriteMap name="RewritesInSightContentaltecNL"> <add key="/tata" value="/productdetails.aspx?id=1628" /> <add key="/tata" value="/productdetails.aspx?id=1628" /> <add key="/marc" val

我有这样一个XML:

<rewriteMaps>
  <rewriteMap name="RewritesInSightContentaltecNL">
    <add key="/tata" value="/productdetails.aspx?id=1628" />
    <add key="/tata" value="/productdetails.aspx?id=1628" />
    <add key="/marc" value="/productdetails.aspx?id=1626" />
    <add key="/marc" value="/productdetails.aspx?id=1626" />
    <add key="/marc" value="/productdetails.aspx?id=1626" />

    <add key="/henk" value="/productdetails.aspx?id=162996" />
    <add key="/henk" value="/productdetails.aspx?id=1aa6" />

    <add key="/tata" value="/productdetails.aspx?id=1628" />
    <add key="/tata" value="/productdetails.aspx?id=1628" />
    <add key="/marc" value="/productdetails.aspx?id=1626" />
    <add key="/marc" value="/productdetails.aspx?id=1626" />
    <add key="/aaaa" value="/productdetails.aspx?id=xxxx" />
  </rewriteMap>

  </rewriteMaps>

我想从中删除基于“key”属性的重复值

因此,我想以:

 <add key="/tata" value="/productdetails.aspx?id=1628" />
 <add key="/marc" value="/productdetails.aspx?id=1626" />
 <add key="/henk" value="/productdetails.aspx?id=162996" />
 <add key="/aaaa" value="/productdetails.aspx?id=xxxx" />

非常感谢您的帮助。

使用扩展方法。此方法将从文档中删除所有选定节点。请尝试此代码

xdoc.Root.Elements("add")
.GroupBy(s => (string)s.Element("value"))
.SelectMany(g => g.Skip(1)) // select all nodes from group except first one
.Remove();
这会给你

  <add key="/tata" value="/productdetails.aspx?id=1628" /> 
  <add key="/marc" value="/productdetails.aspx?id=1626" /> 
  <add key="/henk" value="/productdetails.aspx?id=162996" /> 
  <add key="/henk" value="/productdetails.aspx?id=1aa6" /> 
  <add key="/aaaa" value="/productdetails.aspx?id=xxxx" />

你怎么了??你太对了,懒汉:编辑
  <add key="/tata" value="/productdetails.aspx?id=1628" /> 
  <add key="/marc" value="/productdetails.aspx?id=1626" /> 
  <add key="/henk" value="/productdetails.aspx?id=162996" /> 
  <add key="/henk" value="/productdetails.aspx?id=1aa6" /> 
  <add key="/aaaa" value="/productdetails.aspx?id=xxxx" />