سؤال

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?

هل كانت مفيدة؟

المحلول

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])))

نصائح أخرى

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)));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top