如何在VB.NET的DataTable中为排序后的TOTAL列生成Rank连续序号
实现DataTable添加连续Rank序号的方法
需求说明
SQL查询返回的结果已按TOTAL列降序排序,需要在VB.NET的DataTable中新增Rank列,并填充从1开始的连续序号。当前代码已完成列的添加,但未实现序号填充逻辑。
修改后的完整代码
Public Sub filltable2(ByVal dtgrd As Object, ByVal design As String) Dim publictable As New DataTable Try da.SelectCommand = cmd ' 先填充数据,再添加Rank列 da.Fill(publictable) publictable.Columns.Add(New DataColumn("Rank", GetType(Integer))) Dim count As Integer = 1 ' 遍历行填充Rank序号 For Each row As DataRow In publictable.Rows row("Rank") = count count += 1 Next dtgrd.DataSource = publictable Select Case design Case "trial" ' 可在此添加trial模式专属逻辑 End Select da.Dispose() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Information) End Try End Sub
关键修改点
- 调整执行顺序:先通过
da.Fill(publictable)完成数据填充,再添加Rank列(逻辑更直观) - 新增
For Each循环遍历DataTable的所有行,用count变量从1开始依次赋值给Rank列,每赋值一次count自增1
数据对比
现有数据表
| EMPID | NAME | TOTAL |
|---|---|---|
| 10037 | JACK | 389.11 |
| 10046 | JOHN | 372.62 |
期望结果表
| EMPID | NAME | TOTAL | RANK |
|---|---|---|---|
| 10037 | JACK | 389.11 | 1 |
| 10046 | JOHN | 372.62 | 2 |
内容的提问来源于stack exchange,提问作者roy
相关产品推荐
相关产品推荐

