2010-06-28 85 views
0

在轉換使用LINQ to XML處理嵌套的XML

的父子關係,在這種情況下,尋找最佳實踐我有一個包含域類組[]

我想要做的就是迭代在d(域)中的組[]上創建XElements,並在一次命中中創建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

您可以使用嵌套查詢來做到這一點。

假設你的類看起來像這樣(簡化一點點):

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

的 「絕招」 是:

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

public class Group 
{ 
    public string GroupId; 
} 

可以一氣呵成這樣創建的LINQ to XML表示如果將IEnumerable作爲參數之一傳遞給XElement構造函數,構造函數將枚舉它並分別添加每個項目。

+0

感謝Vitek,似乎在伎倆。 – MikeW 2010-08-10 07:25:59