【发布时间】:2013-09-13 18:36:37
【问题描述】:
我想按数据表的一列对数据表进行排序,例如名称。虽然我想定义自己的排序方式,例如按文件的内容进行排序,但如何实现?
【问题讨论】:
我想按数据表的一列对数据表进行排序,例如名称。虽然我想定义自己的排序方式,例如按文件的内容进行排序,但如何实现?
【问题讨论】:
最简单和最可扩展的方法是使用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();
【讨论】:
DataTable result = dt.AsEnumerable()
.OrderBy(d=>d.Field<string>("YourFieldName"))
.CopyToDataTable();
【讨论】:
最简单的方法:添加一个隐藏的 DataColumn,您将在其中存储文件扩展名并像往常一样在该 DataColumn 上对 DataTable 进行排序。
【讨论】: