简体   繁体   English

基于列索引而不是列名来排序数据表

[英]sorting datatable based on column index not name of column

I have a DataTable which has 10 columns, I would like to sort the table by a column index 10 from largest to smallest. 我有一个有10列的DataTable,我想按照从最大到最小的列索引10对表进行排序。 I know this should be easy for some but this is my first time using such a DataTable 我知道这应该对一些人来说很容易,但这是我第一次使用这样的DataTable

all the website that i have found all say that you have to know the column name but i dont have that and would like to make reference to the column by the index value of the column. 我发现的所有网站都说你必须知道列名,但我没有,并希望通过列的索引值引用该列。 which should sort all the rows in that datatble 应该对该数据中的所有行进行排序

You can use the DefaultView and the ColumnName to sort. 您可以使用DefaultView和ColumnName进行排序。

dataTable.DefaultView.Sort = dataTable.Columns[9].ColumnName + " DESC";

Working example: 工作范例:

    DataTable dt = new DataTable();
    //Define columns to DataTable 
    dt.Columns.Add("Id");
    dt.Columns.Add("Name");


    //Adding rows to DataTable 
    DataRow row1 = dt.NewRow();
    row1["ID"] = 1;
    row1["Name"] = "Jack";
    dt.Rows.Add(row1);


    DataRow row2 = dt.NewRow();
    row2["ID"] = 2;
    row2["Name"] = "Fruit";
    dt.Rows.Add(row2);

    DataRow row3 = dt.NewRow();
    row3["ID"] = 3;
    row3["Name"] = "Ball";
    dt.Rows.Add(row3);

    dt.DefaultView.Sort = dt.Columns[1].ColumnName + " ASC";

    foreach (DataRowView drv in dt.DefaultView)
    {
        for (int i = 0; i < dt.Columns.Count; i++)
            Console.WriteLine(drv[i]);
    }

Try 尝试

DataTable dt = new DataTable(); 
//Then fill values 
DataView dv = dt.AsDataView(); // DataView dv = dt.DefaultView();
dv.Sort = dv.Table.Columns[index].ColumnName + " DESC";
dt = dv.Table;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM