【问题标题】:Sort Column position in datatable c#对数据表c#中的列位置进行排序
【发布时间】:2016-06-15 14:55:10
【问题描述】:

我有 3 列的数据表:{id, Barcode, Name}

当我使用 for 循环循环 Datatable 时,我首先得到列 ID,然后是 Barcode,然后是 Name。

但我需要先获取 Id,然后获取 Name,然后获取 Barcode

如何对列位置进行排序

这是我的代码

  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

【问题讨论】:

  • 请发布您的代码
  • 你的数据表来自哪里?您需要发布代码以获得一些建议
  • @zgood 问题更新
  • @techspider 问题已更新
  • 如果您知道您希望它们按哪个顺序排列,那么您就知道有哪些列 - 因此只需按照您希望它们在代码中的顺序选择您想要的列。为什么要迭代。务实。

标签: c# asp.net datatable


【解决方案1】:

我怀疑在您的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;
}

【讨论】:

    【解决方案2】:

    您应该创建一个DataView

    例如:

    dataTable 将是您的 DataTable

    DataView view = new DataView(dataTable) {Sort = "Id, Name, Barcode" };
    DataTable sortedTable = view.ToTable();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 2018-07-01
      • 2016-08-03
      • 1970-01-01
      • 2011-06-17
      • 2014-02-18
      相关资源
      最近更新 更多