2013-04-23 56 views
2

我有下面的代碼的自動編號列添加到DataTable對數據表設置自動編號後,已經有數據

public void AddAutoIncrementColumn(DataTable dt) 
{ 
    DataColumn column = new DataColumn(); 
    column.DataType = System.Type.GetType("System.Int32"); 
    column.AutoIncrement = true; 
    column.AutoIncrementSeed = 0; 
    column.AutoIncrementStep = 1; 
    dt.Columns.Add(column); 
} 

但是,此值將是空白對於那些已經在表中的所有行;似乎AutoIncrement僅在添加此列後添加的新行觸發。有沒有辦法爲已經存在的行設置自動編號值?

+1

您可以在添加列後更新所有現有行。 – 2013-04-23 21:50:17

+0

您是否可以添加列_before_添加數據? – 2013-04-23 21:55:21

+0

@DStanley,有些情況下我不能首先添加它,例如使用'OleDbDataAdapter.Fill()'。 – sigil 2013-04-23 22:01:38

回答

6

當行已經在表中時,我認爲不可能觸發AutoIncrement功能。但您可以輕鬆地手動更新表格:

public void AddAutoIncrementColumn(DataTable dt) 
{ 
    DataColumn column = new DataColumn(); 
    column.DataType = System.Type.GetType("System.Int32"); 
    column.AutoIncrement = true; 
    column.AutoIncrementSeed = 0; 
    column.AutoIncrementStep = 1; 
    dt.Columns.Add(column); 
    int index = -1; 
    foreach (DataRow row in dt.Rows) 
    { 
     row.SetField(column, ++index); 
    } 
} 
+0

我怎樣才能使用LINQ? – 2016-12-23 05:54:29

相關問題