在数据表c#中排序列位置

时间:2016-06-15 14:55:10

标签: c# asp.net datatable

我的数据表包含3列:{idBarcodeName}

当我使用循环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

2 个答案:

答案 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();