下面是一个典型的应用,在一个成绩表中,包括班级、姓名、总分、总分排名几列数据,希望按班级自动生成总分排名:
'获得所有班级名称,保存在集合中
Dim bjs As List(Of
String) = DataTables("成绩表").GetUniqueValues("","班级")
For Each bj As String In bjs
'获得该班级的全部行,按总分降序排序
Dim drs As List(Of
DataRow) = DataTables("成绩表").Select("[班级] = "
&
bj, "总分 DESC")
For n As
integer = 0
To drs.Count - 1
'遍历所有行
If n > 0
AndAlso drs(n)("总分") = drs(n-1)("总分") Then
'如果总分和上一行相同
drs(n)("总分排名") = drs(n-1)("总分排名") '则排名等于上一行
Else
drs(n)("总分排名") = n + 1
'设置排名
End
If
Next
Next
上面的代码懂了,但是新的问题是:
某单位希望做个排号等候系统,按上述代码思路可以给人员进行顺序号分配,但是后面新到的人员在顺序分配号码不能打乱前面的号码,因此在分配时应该排除已分配的顺序号码,请问如何做到?