如何使用行(C#)的自动索引向DataTable添加新列

如何使用行(C#)的自动索引向DataTable添加新列,c#,C#,我有一个Datatable,我需要添加带有自动值的“id”或“index”列。 就像sql中的标识列一样 我有一个返回起始索引的函数:GetID(); 我需要第一行中该列的值是GetID()返回的值,第二行中的值是GetID()+1。。。。GetID()+2 我需要在没有循环的情况下执行此操作。 我想在创建新列时使用“Expression”,但我不知道怎么做。您可以使用DataTable列的自动增量属性: var dt = new DataTable(); var col = dt.Column

我有一个Datatable,我需要添加带有自动值的“id”或“index”列。 就像sql中的标识列一样

我有一个返回起始索引的函数:GetID(); 我需要第一行中该列的值是GetID()返回的值,第二行中的值是GetID()+1。。。。GetID()+2

我需要在没有循环的情况下执行此操作。
我想在创建新列时使用“Expression”,但我不知道怎么做。

您可以使用DataTable列的
自动增量属性:

var dt = new DataTable();
var col = dt.Columns.Add("ID", typeof (long));
col.AutoIncrement = true;
col.AutoIncrementSeed = GetID();
col.AutoIncrementStep = 1;
但它仅适用于在添加此列之后添加到数据表中的行


如果将此标识列添加到具有现有行的数据表中-这将不会更新现有行,因此在这种情况下,您仍然需要循环现有行并手动更新它们。

填充
数据表时,不能从数据源查询标识符吗?为什么不能使用循环?你的要求不明确,我不知道你做了什么尝试,也不知道那次尝试是如何失败的。表格非常大。我不能使用循环,也不能更改过程。如果可以使用循环(它们非常擅长在集合中的元素上迭代,并对每个元素应用一个操作),您可以选择不使用循环。这是一个相当随意的限制。另外,这个不是真正的标识符的标识符的实际用途是什么?任何时候从数据源重新获取数据时,它都会有一个可能不同的标识符。这似乎会带来比解决问题更多的问题……我不明白为什么不能使用循环。他们是被禁止的还是什么?否则我会说这是在面试或家庭作业问题中应用的限制。。。