2014-01-22 59 views
0

我試圖創建一個看起來像這樣的XML:Linq2XML構建的XDocument,stackoverflowexception

<RootList> 
    <Root> 
     <ID>value1</ID> 
     <Number>value2</Number> 
     <Quantity>value3</Quantity> 
    </Root> 
    <Root> 
     <ID>value1</ID> 
     <Number>value2</Number> 
     <Quantity>value4</Quantity> 
    </Root> 
    <Root> 
     <ID>value5</ID> 
     <Number>value6</Number> 
     <Quantity>value7</Quantity> 
    </Root> 
</RootList> 

使用下面的接口的實例。

interface IRoot 
{ 
    int ID { get; } 
    string Number { get; set; } 
    List<IQuantity> List { get; set; } 
} 

interface IQuantity 
{ 
    int QuantityID { get; } 
    double Quantity { get; set; } 
} 

下面的代碼是我用來創建XML的,但是由於stackoverflowexception導致進程終止。

XDocument doc = new XDocument(
    new XDeclaration("1.0", "utf-8", null), 
    new XElement("RootList", 
     this._list.Select(root => 
      root.List.Select(quantity => 
       new XElement("Root", 
        new XElement("ID", root.ID.ToString()), 
        new XElement("Number", root.Number), 
        new XElement("Quantity", quantity.Quantity.ToString()) 
       ) 
      ) 
     ) 
    ) 
); 

如果我刪除了內心的選擇(其中i遍歷列表列表中)輸出的作品。我不知道如何實際跟蹤這個錯誤,但我敢肯定它是由於內部的選擇。有沒有其他人有過同樣的問題,或者有關於此的任何提示? :)

+0

那麼你出的內存使用內部的選擇。這些列表通常有多大? – JNYRanger

+0

創建到通過它們循環的功能:與當前數據組的列表 .Count之間= 2且每個IRoot具有它們5個IQuantities。所以這些數據應該不是什麼大問題。我減少了迴歸的倉庫來只返回2根與每個呼叫5只。 – Alex07

回答

0

現在發現的問題,我留下了一些XElements出了問題,因爲我認爲他們是沒有必要的,但是下的第一個子節點根都將有一個類變量作爲其值。我製作了一個私有靜態Guid _guid,現在它可以工作。請再說一遍。