none
Datatable 移除列并重新排序 RRS feed

  • 问题

  • 我想从一个数据表中删除不需要的列和预先定义的顺序排列的列的顺序,比如表有一下一些列。

    Col2|Col1|Col3|Test|Test1|Col5|Col4|Some col name|Col6

    我想移除test test1 some col name,并且想按以下方式重新排序。

    Col1|Col2|Col3|Col4|Col5|Col6

     

    // 我需要的列

    List<string> tableColumns = new List<string>();

    tableColumns.Add("Col1");

    tableColumns.Add("Col2");

    tableColumns.Add("Col3");

    tableColumns.Add("Col4");

    tableColumns.Add("Col5");

    tableColumns.Add("Col6");

     

    List<DataColumn> tblColumns = MyDataTable.Columns.Cast<DataColumn>().ToList();

     

    //移除不要的列

    foreach (DataColumn col in tblColumns)

    {

      if (!tableColumns.Contains(col.ColumnName.Trim()))

      {

       MyDataTable.Columns.Remove(col);

      }

    }

     

    怎样才能按照下面的方式排序

    Col1|Col2|Col3|Col4|Col5|Col6
    2016年2月3日 13:29

答案

  • 你好,

    要去掉不想要的列,可以使用下面的代码试一下。

    int index = 0;
    
    foreach (var col in
        MyDataTable.Columns
        .Cast<DataColumn>()
        .OrderBy(x => tableColumns.IndexOf(x.ColumnName))
        .ToList())
    {
        col.SetOrdinal(index);
        index ++;
    }

    排序datatable中列名,通过SetOrdinal方法和index变量来做。

    Cole Wu

    2016年2月4日 2:11
    版主