繁体   English   中英

ADO.NET DataTable 排序不反映在包含 DataSet

[英]ADO.NET DataTable sort does not reflect in containing DataSet

我想对 DataSet 中的 DataTable 进行排序。 我有以下代码:

DataTable dt = ds.Tables[0];
dt.TableName = "NEWNAME";
dt.DefaultView.ApplyDefaultSort = false;
dt.DefaultView.Sort = "COL1 desc";
dt = dt.DefaultView.ToTable();
dt.AcceptChanges(); // <-- Break Point Here
ds.AcceptChanges();

当我在 Visual Studio 中的断点之外逐步执行代码时,在 VS 可视化器中检查 dt 会显示已排序的表,但随后在 VS 可视化器中检查 ds 不会按排序顺序显示表数据,即使名称更改已反映. 我尝试了多种方法对谷歌搜索中可用的数据表进行排序,但结果保持不变。

我究竟做错了什么?

DefaultView.Sort 不对任何内容进行排序。 它只是一个字符串,当您需要像在行中那样构建新表时将使用它

dt = dt.DefaultView.ToTable();

此后,dt 引用(使用从 DefaultView.Sort 获取的信息正确排序)不再指向 ds.Tables[0]。 这是一个全新的数据表。

DefaultView.Sort 应用的另一种方式是当您循环浏览 DefaultView 时,如

foreach(DataViewRow dvr in ds.Tables[0].DefaultView)
{
     // Here you get a row from the table sorted according to the property.
     DataRow row = dvr.Row;
     .....
}

暂无
暂无

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

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