【问题标题】:How to sort dataset in VB .net如何在 VB .net 中对数据集进行排序
【发布时间】: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


【解决方案1】:

您已经对数据进行了正确的排序,所以您一定只是访问不正确。

'Don't create a DataSet that you don't need.
'If all you need is a DataTable, create a DataTable.
Dim table As New DataTable

'Configure and populate table here.

'Sort the associated view.
table.DefaultView.Sort = "DATE_START"

'This will display the data unsorted, because the DataTable itself is not sorted.
For Each row As DataRow in table.Rows
    Console.WriteLine($"{row("ID")}, {row("DATE_START"}")
Next

'This will display the data sorted.
For Each view As DataRowView in table.DefaultView
    Console.WriteLine($"{view("ID")}, {view("DATE_START"}")
Next

【讨论】:

    【解决方案2】:

    您可以使用 DataTable.Select (documentation) 在过滤器表达式中不传递任何内容,对您的列进行排序,然后在结果上调用 CopyToDataTable (documentation):

    Dim dte = ds.Tables(0).Select("", "DATE_START ASC").CopyToDataTable()
    

    【讨论】:

      【解决方案3】:

      试试这个 ORDER BY

      dte.DefaultView.Sort = "ORDER BY DATE_START ASC" 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-08
        • 2014-06-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-05
        • 2021-07-17
        • 2020-04-07
        • 1970-01-01
        相关资源
        最近更新 更多