Given XML as follows:
<Root> <Element> <Id>1</Id> </Element> <Element> <Id>2</Id> </Element> <Element> <Id>3</Id> </Element> </Root>
And IEnumerable with this data:
[0] = { Id = 1, Data = 429 } [1] = { Id = 2, Data = 271 } [2] = { Id = 3, Data = 328 }
Is there an elegant way to use LINQ to XML to combine IEnumerable data with XML based on a common Id without an individual query for each element to bind data to?
Thus, the result will look like this:
<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>
The only thing I can think of is something like this, but I was hoping there was a cleaner method:
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)); }
source share