DataTable.DefaultView.Sort不排序

Mik*_*lls 17 c# sorting datatable

我对DataTable.DefaultView.Sort感到困惑.这是我想要使用它的代码段.

actionLogDT.DefaultView.Sort = "StartDate";

foreach (CustomerService.ActionLogStartEndRow logRow in actionLogDT)
{
  // code here
}
Run Code Online (Sandbox Code Playgroud)

我见过的样本不使用foreach循环,因此让我对如何处理这个问题感到困惑.它没有像我想象的那样排序.

我看到.DefaultView返回一个视图,.Table给出了编译错误.

小智 29

actionLogDT.DefaultView.Sort = "StartDate";

actionLogDT = actionLogDT.DefaultView.ToTable();
Run Code Online (Sandbox Code Playgroud)


Jer*_*ine 11

对视图进行排序不会更改表中数据的排序顺序,只会更改视图中的顺序.如果您foreach在视图上执行操作,将DataRowView中的行转换回强类型行,它应该可以工作.

foreach (DataRowView logRowView in actionLogDT.DefaultView)
{
    CustomerService.ActionLogStartEndRow logRow = logRowView.Row as CustomerService.ActionLogStartEndRow;
    // code here
}
Run Code Online (Sandbox Code Playgroud)


Mik*_*lls 7

我不得不采取略微不同的方法.这篇文章是我能找到的最接近我的代码的帖子.这是工作结果:

actionLogDT.DefaultView.Sort = "StartDate";
DataView dv = actionLogDT.DefaultView;

foreach (DataRowView logRow in dv) { . . . }
Run Code Online (Sandbox Code Playgroud)

从那里我只需要将值重新投入到它的正确类型中.

(string)logRow["Status"].ToString()
Run Code Online (Sandbox Code Playgroud)