我有一个数据表,我需要添加带有自动值的“id”或“index”列。 就像sql中的标识列一样。
我有一个函数可以返回起始索引:GetID(); 我需要第一行中此列的值将是GetID()返回的值,第二行中的值将是GetID()+ 1 .... GetID()+ 2 ...
我需要这样做没有循环。 当我创建新列时,我想使用“Expression”,但我不知道该怎么做。
答案 0 :(得分:0)
您可以使用DataTable列的AutoIncrement
属性:
var dt = new DataTable();
var col = dt.Columns.Add("ID", typeof (long));
col.AutoIncrement = true;
col.AutoIncrementSeed = GetID();
col.AutoIncrementStep = 1;
但它仅适用于在添加此列后添加到DataTable 的行。
如果您将此标识列添加到包含现有行的DataTable中 - 这将不会更新现有行,因此在这种情况下,您仍然需要循环覆盖现有行并手动更新它们。