2014-09-25 2 views
0

데이터 테이블에 datacolumn을 추가 할 때 다음 오류가 발생합니다. SimpleContent 열이 포함 된 테이블에 중첩 된 관계 또는 요소 열을 추가 할 수 없습니다. 이것은 처음에이 코드를 쳤을 때 발생합니다. mt.Columns.Add("IdentityId", typeof(int));오류 "XML에서 데이터 테이블에 ID 데이터 열을 추가하려고 할 때"중첩 된 관계를 추가 할 수 없습니까? "

이상한 점은 이전 오류 후 디버거에서 데이터 테이블을 볼 때 그 열이 있다는 것입니다. 계속하려면 누르십시오. 오류 : '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로 데이터 테이블보다 거래를 발견 한 사실과 함께 할 수있는 뭔가가 알고

여기에 코드입니다. 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; 
}