对数据表进行排序

pas*_*nga 26 .net vb.net

我尝试用以下两种方式对数据表进行排序

table.DefaultView.Sort = "Town ASC, Cutomer ASC"

table.Select("", "Town ASC, Cutomer ASC")
Run Code Online (Sandbox Code Playgroud)

但是他们都没有工作.它始终以原始顺序显示数据.你有任何想法来解决这个问题吗?

Kap*_*wal 33

试试这个:

Dim dataView As New DataView(table)
dataView.Sort = " AutoID DESC, Name DESC"
Dim dataTable AS DataTable = dataView.ToTable()
Run Code Online (Sandbox Code Playgroud)

  • 很好,但你应该建议这个方法创建一个重复的数据表,如果原来的那个很大,这不是很有效 (11认同)

Ste*_*eve 28

在DefaultView(table.DefaultView.Sort = "Town ASC, Cutomer ASC")上设置sort表达式后,您应该使用DefaultView而不是DataTable实例本身遍历表

foreach(DataRowView r in table.DefaultView)
{
    //... here you get the rows in sorted order
    Console.WriteLine(r["Town"].ToString());
}
Run Code Online (Sandbox Code Playgroud)

使用DataTable的Select方法,生成一个DataRow数组.此数组按您的请求排序,而不是DataTable

DataRow[] rowList = table.Select("", "Town ASC, Cutomer ASC");
foreach(DataRow r in rowList)
{
    Console.WriteLine(r["Town"].ToString());
}
Run Code Online (Sandbox Code Playgroud)


小智 26

这是我可以找到对DataTable进行排序而不必创建任何新变量的最短路径.

DataTable.DefaultView.Sort = "ColumnName ASC"
DataTable = DataTable.DefaultView.ToTable
Run Code Online (Sandbox Code Playgroud)

哪里:

ASC - 升序

DESC - 降序

ColumnName - 要排序的列

DataTable - 要排序的表

  • 对我来说最好的解决方案就在这里。工作很快,我实际上已经合并了它以简化数据库查询并在客户端执行排序。要添加,对以逗号分隔的多列进行排序,即:“Col1 ASC,Col2 DESC,Col3 ASC” (2认同)