Обработка вложенного XML - PullRequest
0 голосов
/ 28 июня 2010

в поисках наилучшей практики преобразования отношений родитель-ребенок с использованием Linq в XML

В этом случае у меня есть класс домена, который содержит группу []

То, что я хочу сделать, это перебрать Группы [] в d (домены) и создать XElements одним ударом.

        XElement _customers = new XElement("Domains",
                                from c in d
                                orderby c.id //descending  
                                select new XElement("Domain",
                      // something like-->  new XElement("Groups", c.id),
                      // loop through d.Group and add new XElement...
                                    new XElement("id", c.id),
                                    new XAttribute("name", c.name),
                                    new XElement("ismanaged", c.IsManaged.ToString()
                                    )));

Заранее спасибо

1 Ответ

1 голос
/ 28 июня 2010

Вы можете использовать для этого вложенные запросы.

Предполагая, что ваши классы выглядят так (немного упрощается):

public class Domain
{
    public string Name;
    public List<Group> Groups;
}

public class Group
{
    public string GroupId;
}

Вы можете создать представление LINQ to XML за один разнапример:

XElement domains = new XElement("Domains",
    from domain in domains
    select new XElement("Domain",
        new XAttribute("name", domain.Name),
        from group in domain.Groups
        select new XElement("Group",
            new XAttribute("id", group.GroupId))
    ));

«Хитрость» заключается в том, что если вы передадите IEnumerable в качестве одного из параметров конструктору XElement, конструктор будет перечислять его и добавлять каждый элемент отдельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...