If i undestand you correctly, you have to calculate
salary_base
by adding
salary_increment
multiplied by
n
till
n
reaches
maximum_step
.
Assuming your data is stored in a
DataTable
object...
rd = .ExecuteReader(CommandBehavior.CloseConnection)
Dim dt As DataTable = New DataTable()
dt.Load(rd)
Dim maxstep = dt.AsEnumerable().Max(Function(x) x.Field(Of Integer)("maximum_step"))
Dim finaldt As DataTable = New DataTable()
finaldt.Columns.Add(New DataColumn("rank", Type.GetType("System.String")))
finaldt.Columns.Add(New DataColumn("grade_level", Type.GetType("System.Int32")))
For i As Integer = 1 To maxstep
finaldt.Columns.Add(New DataColumn("step_" & i, Type.GetType("System.Int32")))
Next
For Each r As DataRow In dt.Rows
Dim destRow As DataRow = finaldt.NewRow()
maxstep = r.Field(Of Integer)("maximum_step")
destRow("rank") = r.Field(Of String)("rank")
destRow("grade_level") = r.Field(Of Integer)("grade_level")
For i As Integer = 1 To maxstep
destRow("step_" & i) = r.Field(Of Double)("salary_base") + (r.Field(Of Double)("salary_increment") * i)
Next
finaldt.Rows.Add(destRow)
Next
Result (
finaldt
content):
rank grade_level step_1 step_2 step_3 step_4 step_5 step_6 step_7
A 15 5000 null null null null null null
B 14 4705 4910 5115 null null null null
C 13 3685 3870 4055 4240 4425 4610 4795
In the same manner you can create
ListViewItem[
^].
[EDIT]
.NET 2. solution:
Dim sortedRows = dt.Select("maximum_step>=0", "maximum_step DESC")
Dim maxstep As Integer = sortedRows.GetValue(0)("maximum_step")
Dim finaldt As DataTable = New DataTable()
finaldt.Columns.Add(New DataColumn("rank", Type.GetType("System.String")))
finaldt.Columns.Add(New DataColumn("grade_level", Type.GetType("System.Int32")))
For i As Integer = 1 To maxstep
finaldt.Columns.Add(New DataColumn("step_" & i, Type.GetType("System.Int32")))
Next
For Each r As DataRow In dt.Rows
Dim destRow As DataRow = finaldt.NewRow()
maxstep = r("maximum_step")
destRow("rank") = r("rank")
destRow("grade_level") = r("grade_level")
For i As Integer = 1 To maxstep
destRow("step_" & i) = r("salary_base") + (r("salary_increment") * i)
Next
finaldt.Rows.Add(destRow)
Next