Question

I get an HybridDictionary with all the child XElements.
I don't know ahead how many items I have there.
So instead of doing this:

xmlDoc.Element("Parent").Add(
     new XElement("Child", new XAttribute("Name", "Child1"),
           new XElement("Id", "796"),
           new XElement("Name", "gdsa")
           etc..
      ));  

I'm trying to do something like that:

Strung [] allKeys = new String[ChildElements.Count];
TheHybridDictionary.Keys.CopyTo(allKeys, 0);

xmlDoc.Element("Parent").Add(
      new XElement("Child", new XAttribute("Name", "Child1"),
            for (int i = 0; i < TheHybridDictionary.Count; i++)
                   new XElement(allKeys[i], TheHybridDictionary[allKeys[i]])

But how to connect whatever is inside the for loop to be part of the XML document construction?

Was it helpful?

Solution

Problem is, your HybridDictionary class does not implement IEnumerable, so you can't use LINQ on it directly.

But you can use allKeys string array instead:

string [] allKeys = new String[ChildElements.Count];
TheHybridDictionary.Keys.CopyTo(allKeys, 0);

xmlDoc.Element("Parent").Add(
    new XElement("Child", new XAttribute("Name", "Child1"),
        allKeys.Select(x => new XElement(x, TheHybridDictionary[x])))

OTHER TIPS

You can use .Add() method as in Stefan's comment, or use LINQ:

xmlDoc.Element("Parent").Add(
  new XElement("Child", new XAttribute("Name", "Child1"),
        TheHybridDictionary.Select(kvp => new XElement(kvp.Key, kvp.Value)));
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top