2014-09-25 83 views
0

嘗試將數據列添加到數據表時,出現以下錯誤:無法將嵌套關係或元素列添加到包含SimpleContent列的表中。這種情況發生在我第一次啓用此代碼時mt.Columns.Add("IdentityId", typeof(int));嘗試將標識datacolumn添加到XML中的數據表時出現「無法添加嵌套關係」錯誤?

奇怪的是,當我在調試器中查看之前錯誤後的數據表時,該列就在那裏。當我繼續時,錯誤是:名爲'IdentityId'的列已屬於此DataTable。它似乎將其添加,然後生成錯誤。

下面的代碼:

XElement doc = XElement.Load(XmlFileName); 
string TextToFind = "Some Text"; 
IEnumerable<XElement> query1 = doc.Descendants("desc").Where(c => c.Value == TextToFind).Ancestors("re"); 
IEnumerable<XElement> query2 = query1.First().Parent.ElementsAfterSelf("ti"); 
string xml = query2.First().ToString(); 
stream = new StringReader(xml); 
reader = new XmlTextReader(stream); 
xmlDataset.ReadXml(reader); 
DataTable mt = xmlDataset.Tables["mt"]; 
DataColumn dc = mt.Columns.Add("IdentityId", typeof(int)); 
dc.AutoIncrement = true; 
dc.AutoIncrementSeed = 1; 
dc.AutoIncrementStep = 1; 

我知道它是與該數據表來自XML,以及幾個解決方案,我發現多得多的XML比DataTable中的事實。 XML無法更改。

回答

0

由於沒有幫助,我最終複製了傳統的循環。我試圖使用CopyClose,但我一直收到相同的錯誤。 MSDN能夠引導我通過一個解決方案:

private DataTable ConvertToRegularDataTable(DataTable source) 
{ 
    DataTable result = new DataTable(); 

    foreach (DataColumn c in source.Columns) 
    { 
     result.Columns.Add(c.ColumnName, typeof(string)); 
    } 
    DataColumn dc = new DataColumn("ID"); // table.Columns.Add("IdentityId", typeof(int)); 
    dc.AutoIncrement = true; 
    dc.AutoIncrementSeed = 1; 
    dc.AutoIncrementStep = 1; 
    result.Columns.Add(dc); 

    foreach (DataRow dr in source.Rows) 
    { 
     result.Rows.Add(dr.ItemArray); 
    } 
    return result; 
} 
相關問題