gpt4 book ai didi

.net - 在VB asp.net 2.0中对数据表的行进行分组

转载 作者:行者123 更新时间:2023-12-02 04:19:34 25 4
gpt4 key购买 nike

顾名思义,我正在尝试将数据表中的行分组。为了进一步详细说明,该表具有相同的行,但一个字段(列)除外。基本上,我想做的是将相同行的所有不同字段放在同一字段中,同时删除其他行。

这是我目前正在使用的语法

   Dim i As Integer
Dim j As Integer
For i = 0 To (ds.Tables(0).Rows.Count() - 1) Step 1
If (i < ds.Tables(0).Rows.Count()) Then
roleHtml = "<table><tr><td>" + ds.Tables(0).Rows(i).Item("roleName") + "</td></tr>"
For j = (ds.Tables(0).Rows.Count() - 1) To 0 Step -1
If (ds.Tables(0).Rows(i).Item("UserName") = ds.Tables(0).Rows(j).Item("UserName")) And (ds.Tables(0).Rows(i).Item("roleName") IsNot ds.Tables(0).Rows(j).Item("roleName")) Then
roleHtml += "<tr><td>" + ds.Tables(0).Rows(j).Item("roleName") + "</td></tr>"
ds.Tables(0).Rows.Remove(ds.Tables(0).Rows(j))
i -= 1
End If
Next j
roleHtml += "</table>"
ds.Tables(0).Rows(i).Item("roleName") = roleHtml
End If
Next i

问题是,删除行时它们的索引会更改,并且基本上该字段会被抛出与它无关的另一行。

最佳答案

好吧,我可以帮助循环结构。这与您正在执行的操作完全不匹配(它使表完整无缺,只是构建了一个大字符串,并且还假定该表以特定方式进行了排序),但是它将演示使用实际数据进行的经典控制中断处理。为此,需要先按用户然后按角色对表进行排序。

Dim i As Integer = 0
Dim CurUser As String = ""
Dim CurRole As String = ""
Dim result As new StringBuilder()
Dim r as DataRowCollection = ds.Tables(0).Rows

While i < r.Count
'Next User:'
CurUser = r(i)("UserName")
result.AppendFormat("<h2>{0}</h2>", CurUser).AppendLine()
result.AppendLine("<table>")

While i < r.Count AndAlso CurUser = r(i)("UserName")
'Next Role:'
CurRole = r(i)("roleName")
result.AppendFormat("<tr><td>{0}</td></tr>", CurRole).AppendLine()

While i < r.Count AndAlso CurUser = r(i)("UserName") AndAlso CurRole = r(i)("roleName")
i += 1 'Next Record: same user, role '
End While
'Finished this role'
End While
'Finished this user:'
result.AppendLine("</table>").AppendLine()
End While

它具有 3个嵌套循环,而不仅仅是两个。但是,它仍然具有线性性能:它将仅对每个记录进行一次迭代。之所以起作用,是因为所有循环共享相同的计数器,该计数器仅在内部循环中递增,并且它们都具有相同的基本结束条件。

关于.net - 在VB asp.net 2.0中对数据表的行进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/362979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com