处理嵌套的XML

时间:2010-06-28 04:02:39

标签: linq-to-xml

寻找使用Linq将父子关系转换为XML的最佳实践

在这种情况下,我有一个包含Group []

的Domain类

我想要做的是迭代d(域)中的Groups []并在一次点击中创建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 个答案:

答案 0 :(得分:1)

您可以使用嵌套查询来执行此操作。

假设你的课程看起来像这样(简化一点):

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构造函数,构造函数将枚举它并分别添加每个项目。