是非主键列vb.net的简单行重新排序方法

时间:2018-03-02 14:36:02

标签: vb.net

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

Sleep(); //from Win32

std::this_thread::sleep_for();

让我说改变顺序

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

我需要重新订购数字列。有没有办法自动执行此操作(vb.net中的某些内部机制),因此它给出了。

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

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

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

.net中是否有一个机制可以帮助解决这个问题,或者可以就哪个代码最好地解决这个问题的方向表示感谢。

1 个答案:

答案 0 :(得分:0)

使用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