寻找使用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()
)));
提前致谢
答案 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构造函数,构造函数将枚举它并分别添加每个项目。