我的数据表有像这样的行

ID Name
2  A
4  B
3  C
5  D
1  E




List order = new List() { "1", "3", "2", "5", "4" }


--------------按列表排序-----------------

ID Name
1   E
3   C
2   A
5   D
4   B


任何人都可以帮助实现这一目标。.我在Winforms中使用DataTable。

最佳答案

我认为您可以使用join order method AsEnumerable method您的on和数据表,并且在DataTable部分上可以使它们均等并选择行,然后可以使用c# - 在Winform中的Datagridview中自定义排序-LMLPHP从该查询中生成一个CopyToDataTable

var dt = new DataTable();
var dc = new DataColumn() { ColumnName = "ID", DataType = typeof(string) };
dt.Columns.Add(dc);
dc = new DataColumn() { ColumnName = "Name", DataType = typeof(string) };
dt.Columns.Add(dc);
dt.Rows.Add(new object[] { "2", "A" });
dt.Rows.Add(new object[] { "4", "B" });
dt.Rows.Add(new object[] { "3", "C" });
dt.Rows.Add(new object[] { "5", "D" });
dt.Rows.Add(new object[] { "1", "E" });

List<string> order = new List<string>() { "1", "3", "2", "5", "4" };

var query = from item in order
            join row in dt.AsEnumerable() on item equals row.Field<string>("ID")
            select row;

var result = query.CopyToDataTable();


结果将是:



我不确定这是否是最好的方法,但这似乎与您的情况相符。

关于c# - 在Winform中的Datagridview中自定义排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34314046/

10-12 07:26