【问题标题】:is there Simple row Reorder method for non primary key columns vb.net是否有非主键列的简单行重新排序方法vb.net
【发布时间】:2018-03-02 14:36:02
【问题描述】:

这是我的第一个堆栈溢出消息。我目前正在为一家公司编写软件,并且在行上的数据表排序方面遇到了问题。假设我在下面有一个模型

primary key   number Sorted    some string
   100          1                a string
   101          2                another string
   102          3                after string
   103          4                before string

假设我改变了顺序

primary key,   number sorted,    some string,
   100           1               a string
   101           2               another string   
   103           4               before string
   102           3               after string

我需要重新排序数字列。有没有办法自动执行此操作(vb.net 中的一些内部机制)所以它提供了。

primary key,   number sorted,    some string,
   100              1             a string
   101              2             another string   
   103              3             before string
   102              4             after string

如果我删除其中一项,我需要重新排列数字列

primary key,   number sorted,    some string,
   100              1             a string
   103              3             before string
   102              4             after string

变成

primary key,   number sorted,    some string,
   100               1            a string
   103               2            before string
   102               3            after string

.net 中是否有一种机制可以帮助实现此功能,或者可以就哪些代码最好地解决此问题提供一些指导。

【问题讨论】:

  • 主键的目的是提供唯一标识符(如序列)。使用数字字符串作为 PK 似乎是一个大胆的设计决定。请阅读How to Ask 并采取tour
  • 主键用于识别字符串和数字,数字本身,然后将由代码的不同部分按顺序运行。我需要调整该序列的顺序。
  • 你使用的是什么数据库系统?
  • 我应该补充一点,上面是一个数据表的例子。主键是一个整数。
  • 行的存储方式并不是您真正需要担心的事情,您可以使用 SQL ORDER BY 子句以您想要的任何顺序获取数据。

标签: vb.net


【解决方案1】:

使用 DataView 的 Sort 方法将其设置为要排序的列。您的初始 DataTable 未受影响,并且您有一个新的排序 DataTable。

Dim dt As New DataTable
Dim da As New SqlDataAdapter
Dim strSQL As String = "Select * From Coffees Order By [Name]"
Dim cn As New SqlConnection(My.Settings.CoffeeConnectionString)
Dim cmd As New SqlCommand(strSQL, cn)
da.SelectCommand = cmd
da.Fill(dt)
Dim dv As DataView = dt.DefaultView
dv.Sort = "Roast"
Dim SortedDt As DataTable = dv.ToTable
For Each row As DataRow In SortedDt.Rows
      Debug.Print(row("Name").ToString & "  " & row("Roast").ToString)
Next

【讨论】:

    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2012-07-08
    相关资源
    最近更新 更多