2012-01-03 32 views
3

我試圖將DataTable的第一行設置爲列名。我正在使用Code Project的GenericParsing library。問題是解析器爲列設置了默認名稱。在DataTable中創建第一行列的名稱

謝謝。

+0

你能不能給一個鏈接解析庫? – 2012-01-03 13:24:26

+0

爲什麼要將第一行設置爲列名?該庫類中必須有一些屬性,這些屬性將允許您指定列名並覆蓋默認值。 – 2012-01-03 13:25:05

+0

@Jason Down:我在這裏找到它http://www.codeproject.com/KB/database/GenericParser.aspx其實是個不錯的項目:) – cyberbrain 2012-01-03 13:35:08

回答

6

這應該做你想要什麼:

DataRow firstRow = table.NewRow(); 
List<string> names = new List<string>(); 
foreach (DataColumn column in table.Columns) 
{ 
    names.Add(column.ColumnName); 
} 
firstRow.ItemArray = names.ToArray(); 
table.Rows.InsertAt(firstRow, 0); 

如果第一行已經存在,並且要「覆蓋」這一變化的第一行:

DataRow firstRow = table.Rows[0]; 

,並刪除最後一行。

+0

這行代碼創建了一個新行,裏面填充了列名......!但我想要的其實是相反的......通過從第一行導入值來更改實際列的名稱......!我可以使用一個虛擬循環,但我跳躍,你有一些事情對我來說更優雅:)謝謝 – cyberbrain 2012-01-03 13:45:27

8

我認爲你需要以下條件:

foreach (DataColumn column in table.Columns) 
{ 
    string cName = table.Rows[0][column.ColumnName].ToString(); 
    if (!table.Columns.Contains(cName) && cName != "") 
    { 
     column.ColumnName = cName; 
    } 

} 

table.Rows[0].Delete(); //If you don't need that row any more 
+0

當然添加data.Rows [0] .Delete()如果你不需要那行:) – 2012-01-03 14:02:07

+0

你已經檢查過'cName!=「」'一次,第二次是毫無意義的,您可以安全地更改爲'column.ColumnName = cName;' – 2012-01-03 14:22:59

0

喜希望這將有助於ü這將使所有行,你列標題

foreach (DataRow inRow in inputTable.Rows) 
    { 
     string newColName = inRow[0].ToString(); 
     outputTable.Columns.Add(newColName); 
    } 
相關問題