加载 DataTable 后强制新的自动增量列进入第 0 列

问题描述

我需要将自己隐藏的自动增量添加到数据表中,但是在从 .accdb 文件加载数据表之后。隐藏新列没有问题,但是否可以在位置 0 插入一列?我不能在加载数据后将新的自动增量列放在最右边,因为它会妨碍,因为它会导致在运行时添加其他列之前出现间隙。每个列索引>0 的数据列必须与数据一致,没有由于隐藏的自动增量列造成的间隙。

我知道如何使用列名从 DataView 创建表,但不确定这是否是我想要的。一个新的DataTable形成一个DataView会是一个完整的独立DataTable吗?

解决方法

要在数据加载后为任何列设置索引值,请使用 DataColumn.SetOrdinal 方法。

假设加载的数据有列“ID”(主键)、“Col 1”、“Col 2”、“Col 3”。

接下来,添加您自己的自动增量、唯一列作为“myID”,然后使用以下语法:

dataTable.Columns["ID"].SetOrdinal(1);
dataTable.Columns["Col 1"].SetOrdinal(2); 
dataTable.Columns["Col 2"].SetOrdinal(3);
dataTable.Columns["Col 3"].SetOrdinal(4); 
dataTable.Columns["myID"].SetOrdinal(0); 

这会将新添加的列的索引设置为 0,并将其余列向上移动 1。