我的数据表包含3列:{id
,Barcode
,Name
}
当我使用循环Datatable for 循环时,我得到第一个列,然后是条形码,然后是名称。
但我需要获得Id然后名称然后条形码
如何对列位置进行排序
这是我的代码
List<Tayf.Models.Product> dataaa = HttpContext.Current.Cache["productcache"] as List<Tayf.Models.Product>;
DataTable dataTable;
dataTable = transfer.ToDataTable(dataaa);
int cols = dataTable.Columns.Count;
for (int i = 0; i < cols; i++)
{
string colname= dataTable.Columns[i].ColumnName;
}
i=0 >>> Id
i=1 >> Barcoe
i=2 >>> name
答案 0 :(得分:0)
我怀疑在您的select query
中,您正在按照您提及的顺序选择数据
select id, Barcode,Name from YourTableName
如果是这种情况,请尝试更改您的选择语句序列,如 -
select id, Name,Barcode from YourTableName
<强>更新强> 尝试使用DataColumn.SetOrdinal方法。
List<Tayf.Models.Product> dataaa = HttpContext.Current.Cache["productcache"] as List<Tayf.Models.Product>;
DataTable dataTable;
dataTable = transfer.ToDataTable(dataaa);
dataTable.Columns["id"].SetOrdinal(0);
dataTable.Columns["Name"].SetOrdinal(1);
dataTable.Columns["Barcode"].SetOrdinal(2);
int cols = dataTable.Columns.Count;
for (int i = 0; i < cols; i++)
{
string colname= dataTable.Columns[i].ColumnName;
}
答案 1 :(得分:0)
您应该创建DataView。
例如:
dataTable 将是您的DataTable
DataView view = new DataView(dataTable) {Sort = "Id, Name, Barcode" };
DataTable sortedTable = view.ToTable();