eliminar eficientemente elementos xml duplicados en c #

Tengo un par de archivos XML que contienen muchas entradas duplicadas, como estas.

<annotations>
  <annotation value=",Clear,Outdoors" eventID="2">
    <image location="Location 1" />
    <image location="Location 2" />
    <image location="Location 2" />
  </annotation>

  <annotation value=",Not a problem,Gravel,Shopping" eventID="2">
    <image location="Location 3" />
    <image location="Location 4" />
    <image location="Location 5" />
    <image location="Location 5" />
    <image location="Locat,ion 5" />
  </annotation>
</annotations>

Quiero eliminar los elementos duplicados en cada uno de los niños. La forma en que abordé esto es copiando todos los elementos a una lista y luego comparándolos,

 foreach (var el in xdoc.Descendants("annotation").ToList())
   {
      foreach (var x in el.Elements("image").Attributes("location").ToList())
       {
           //add elements to a list
       }
   }

A mitad de camino me di cuenta de que esto es muy ineficiente y consume mucho tiempo. Soy bastante nuevo en XML, me preguntaba si hay algún método incorporado en C # que pueda usar para eliminar duplicados.

Traté de usar

if(!x.value.Distinct()) // can't convert collections to bool
    x.Remove();

Pero eso no funciona, tampoco

if(x.value.count() > 1) // value.count returns the number of elements.
   x.Remove()

Respuestas a la pregunta(3)

Su respuesta a la pregunta