эффективное удаление дублирующихся элементов XML в C #

У меня есть несколько файлов XML, которые содержат много повторяющихся записей, таких как эти.

<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="Location 5" />
  </annotation>
</annotations>

Я хочу удалить дубликаты элементов каждого ребенка. Я подошел к этому, скопировав все элементы в список, а затем сравнив их,

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

на полпути я понял, что это очень неэффективно и требует много времени. Я довольно новичок в XML, мне было интересно, есть ли какие-либо встроенные методы в C #, которые я могу использовать для удаления дубликатов ?.

Я пытался с помощью

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

Но это не работает, как и

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

Ответы на вопрос(3)

Ваш ответ на вопрос