Учитывая XML, как это:
<Root>
<Element>
<Id>1</Id>
</Element>
<Element>
<Id>2</Id>
</Element>
<Element>
<Id>3</Id>
</Element>
</Root>
И IEnumerable с этими данными:
[0] = { Id = 1, Data = 429 }
[1] = { Id = 2, Data = 271 }
[2] = { Id = 3, Data = 328 }
Существует ли элегантный способ использования LINQ to XML для объединения данных IEnumerable с XML на основе общего Id
без индивидуального запроса каждого элемента для связи данных?
Таким образом, результат будет выглядеть так:
<Root>
<Element>
<Id>1</Id>
<Data>429</Data>
</Element>
<Element>
<Id>2</Id>
<Data>271</Data>
</Element>
<Element>
<Id>3</Id>
<Data>328</Data>
</Element>
</Root>
Единственное, что я могу придумать, это что-то вроде этого, но я надеялся, что есть более чистый метод:
foreach(var d in MyIEnumerable)
{
XElement element = (from x in MyXDoc.Elements("Element")
where x.Element("Id").Value == d.Id
select x).Single();
element.Add(new XElement("Data", d.Data));
}