0

我想按数据表的一列对数据表进行排序,例如名称。虽然我想定义自己的排序方式,例如按文件的扩展名排序,但如何实现这种方式?

4

3 回答 3

2

最简单和最可扩展的方法是使用Linq-To-DataSetand 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();
于 2013-09-13T10:17:33.703 回答
1
DataTable result = dt.AsEnumerable()
                     .OrderBy(d=>d.Field<string>("YourFieldName"))
                     .CopyToDataTable();
于 2013-09-13T10:36:37.507 回答
0

最简单的方法:添加一个隐藏的 DataColumn,您将在其中存储文件扩展名并像往常一样在该 DataColumn 上对 DataTable 进行排序。

于 2013-09-13T10:13:50.423 回答