【发布时间】:2021-09-08 06:17:30
【问题描述】:
我正在编写一个代码,我需要按日期对通过数据库接收到的数据集进行排序(稍后将其导出到 excel 表中,数据应按日期在 excel 表中排序)。
下面是我用来排序的代码sn-p。
Dim ds As DataSet
Dim dte As DataTable = ds.Tables(0).DefaultView.ToTable()
dte.DefaultView.Sort = "DATE_START ASC" // Using this to sort
dte.DefaultView.ToTable()
dte.DefaultView.Sort = "DATE_DUE ASC" 返回真值,但 dte 仍返回未排序的数据。不知道这里有什么问题。有没有其他方法可以按日期对数据进行排序?
【问题讨论】:
-
当您对
DefaultView进行排序时,您正在这样做:对DefaultView进行排序。这对DataTable本身的影响为零,因此如果您然后循环遍历Rows集合,那么您将看不到任何区别。您必须遍历DefaultView才能看到排序的效果。每个项目都将是DataRowView而不是DataRow,但无论如何您都可以以同样的方式对待它们。 -
顺便问一下,打电话
ToTable真的有用吗?除非您绑定了DataTable并且需要查看未排序的数据,否则请摆脱该部分。只需设置ds.Tables(0).DefaultView.Sort,然后循环ds.Tables(0).DefaultView。 -
另外,你的
DataSet有什么意义吗?它是否包含任何其他DataTables?如果没有,那么为什么要创建它呢?为什么不直接创建您需要的DataTable并直接使用它? -
在您发布的代码中,您首先创建现有
DataTable的副本,然后对该副本的DefaultView进行排序,然后创建排序数据的副本,但您没有用它做任何事情。如果您将最后一个ToTable的结果分配给另一个变量,甚至返回给dte,您就可以通过该变量访问排序后的数据。 -
对数据集进行排序可能意味着什么。您希望数据集中的表按表名按字母顺序排序吗?不,您要对 DataTable 进行排序。您可能想要编辑您的标题。
标签: .net vb.net sorting datatable dataset