简体   繁体   English

DataTable用C#排序?

[英]DataTable Sort in C#?

我想按DataTable的一列对DataTable进行排序,例如Name。虽然我想定义自己的排序方式,例如按文件的扩展名排序,但该如何实现呢?

The easiest and most extendable way is to use Linq-To-DataSet and Path.GetExtension : 最简单,最可扩展的方法是使用Linq-To-DataSetPath.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);

If you need a new DataTable from the query (you could simply loop it with foreach ) use: 如果您需要查询中的新DataTable (可以使用foreach对其进行循环),请使用:

dataTable = orderedRows.CopyToDataTable();
DataTable result = dt.AsEnumerable()
                     .OrderBy(d=>d.Field<string>("YourFieldName"))
                     .CopyToDataTable();

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM