эффективное удаление дублирующихся элементов 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()