我的数据表有像这样的行
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
部分上可以使它们均等并选择行,然后可以使用从该查询中生成一个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/