C# 如何基于内部值比较删除XML节点

C# 如何基于内部值比较删除XML节点,c#,linq-to-xml,C#,Linq To Xml,我有一个结构如下的XML文件: <tu> <tuv xml:lang="EN"> <seg>XXX</seg> </tuv> <tuv xml:lang="FR"> <seg>YYY</seg> </tuv> </tu> <tu> <tuv xml:lang="EN">

我有一个结构如下的XML文件:

<tu>
    <tuv xml:lang="EN">
        <seg>XXX</seg>
    </tuv>
    <tuv xml:lang="FR">
        <seg>YYY</seg>
    </tuv>
</tu>
<tu>
    <tuv xml:lang="EN">
        <seg>XXX</seg>
    </tuv>
    <tuv xml:lang="FR">
        <seg>YYY</seg>
    </tuv>
</tu>
...

XXX
YYY
XXX
YYY
...
XXX
等于C#应用程序中的
YYY
时,我想删除节点
。我尝试过使用linq和其他一些方法,但无法比较这些内部值A,然后在必要时删除父节点


提前多谢

首先,您的XML无效,因此我添加了一个
节点-然后这对我有效:

XDocument doc = XDocument.Load("test.xml");

var nodesWithMatchingElements = doc.Root.Elements("tu")
                                   .GroupBy(e => e)
                                   .Select(g => new 
                                    { 
                                       Element = g.Key, 
                                       Count = g.Descendants("seg").Select(x => x.Value).Distinct().Count() 
                                    })
                                   .Where(x => x.Count == 1);

foreach (var node in nodesWithMatchingElements)
    node.Element.Remove();

我已经尝试过在其他类似问题中找到的linq代码(如)。我的问题是,所有示例都显示了如何查询、选择和删除,但我找不到任何同时比较内部值的内容。。。