我想通过DataTable的一个列对DataTable进行排序,例如Name.While我想定义我自己的排序方式,比如按文件的扩展排序,如何实现这种方式?
答案 0 :(得分:2)
最简单,最易扩展的方法是使用Linq-To-DataSet
和Path.GetExtension
:
var orderedRows = dataTable.AsEnumerable()
.Select(row => new { // create an anoymous type for readability
row,
extension = Path.GetExtension(row.Field<string>("Filename"))
})
.OrderBy(x => x.extension)
.Select(x => x.row);
如果您需要查询中的新DataTable
(您可以使用foreach
循环播放),请使用:
dataTable = orderedRows.CopyToDataTable();
答案 1 :(得分:1)
DataTable result = dt.AsEnumerable()
.OrderBy(d=>d.Field<string>("YourFieldName"))
.CopyToDataTable();
答案 2 :(得分:0)
最简单的方法:添加一个隐藏的DataColumn,您将在其中存储文件扩展名,并通常在该DataColumn上对DataTable进行排序。