如何根据datagridview中的最大最小数据值进行值加权vb.net
How to do value weighted based on maximum-minimum data value in datagridview vb.net
我想通过使用数字 1-4 来根据数据网格视图中值的数量级(从最小值到最大值)替换数据值来进行数据加权,我正在使用 visual basic 来编写我的程序。
这是 table 初始数据:
方法
第 1 列
FCFS
146
SPT
143
LPT
253.25
EDD
192.25
我想根据最大最小值对 column1 的值进行加权,然后将其显示在“结果”列中,条件如下:
- “1”是第 1 列中的最小数字
- “2”是第 1 列中的第二个最小数字
- “3”表示第 1 列中的第 3 个最小值
- 并且“4”是第 1 列中的最大数量
我想展示的最终结果就像下面的table:
方法
第 1 列
结果
FCFS
146
2
SPT
143
1
LPT
253.25
4
EDD
192.25
3
你能帮我写出得到“结果”的语法吗?我很抱歉我的英语不好。
提前致谢
如果不介意改变datagridview行的顺序,可以直接对datagridview进行排序。
DataGridView1.Sort(DataGridView1.Columns("Column1"), ListSortDirection.Ascending)
否则可以参考下面的例子
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As DataTable = New DataTable
dt.Columns.Add("Method")
dt.Columns.Add("Column1")
dt.Rows.Add("FCFS", 146)
dt.Rows.Add("SPT", 143)
dt.Rows.Add("LPT", 253.25)
dt.Rows.Add("EDD", 192.25)
DataGridView1.DataSource = dt
DataGridView1.AllowUserToAddRows = False
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim col As DataGridViewColumn = New DataGridViewTextBoxColumn()
col.Name = "Result"
DataGridView1.Columns.Add(col)
Dim weighting As Integer = 1
Dim dic As Dictionary(Of String, Integer) = New Dictionary(Of String, Integer)
Dim arr As String() = DataGridView1.Rows.Cast(Of DataGridViewRow)().Select(Function(x) x.Cells("Column1").Value.ToString).ToArray()
Array.Sort(arr)
For Each key In arr
dic.Add(key, weighting)
weighting += 1
Next
For i As Integer = 0 To DataGridView1.Rows.Count - 1
Dim col1Cell = DataGridView1.Rows(i).Cells("Column1").Value.ToString
DataGridView1.Rows(i).Cells("Result").Value = dic(col1Cell)
Next
End Sub
结果:
我想通过使用数字 1-4 来根据数据网格视图中值的数量级(从最小值到最大值)替换数据值来进行数据加权,我正在使用 visual basic 来编写我的程序。
这是 table 初始数据:
方法 | 第 1 列 |
---|---|
FCFS | 146 |
SPT | 143 |
LPT | 253.25 |
EDD | 192.25 |
我想根据最大最小值对 column1 的值进行加权,然后将其显示在“结果”列中,条件如下:
- “1”是第 1 列中的最小数字
- “2”是第 1 列中的第二个最小数字
- “3”表示第 1 列中的第 3 个最小值
- 并且“4”是第 1 列中的最大数量
我想展示的最终结果就像下面的table:
方法 | 第 1 列 | 结果 |
---|---|---|
FCFS | 146 | 2 |
SPT | 143 | 1 |
LPT | 253.25 | 4 |
EDD | 192.25 | 3 |
你能帮我写出得到“结果”的语法吗?我很抱歉我的英语不好。 提前致谢
如果不介意改变datagridview行的顺序,可以直接对datagridview进行排序。
DataGridView1.Sort(DataGridView1.Columns("Column1"), ListSortDirection.Ascending)
否则可以参考下面的例子
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As DataTable = New DataTable
dt.Columns.Add("Method")
dt.Columns.Add("Column1")
dt.Rows.Add("FCFS", 146)
dt.Rows.Add("SPT", 143)
dt.Rows.Add("LPT", 253.25)
dt.Rows.Add("EDD", 192.25)
DataGridView1.DataSource = dt
DataGridView1.AllowUserToAddRows = False
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim col As DataGridViewColumn = New DataGridViewTextBoxColumn()
col.Name = "Result"
DataGridView1.Columns.Add(col)
Dim weighting As Integer = 1
Dim dic As Dictionary(Of String, Integer) = New Dictionary(Of String, Integer)
Dim arr As String() = DataGridView1.Rows.Cast(Of DataGridViewRow)().Select(Function(x) x.Cells("Column1").Value.ToString).ToArray()
Array.Sort(arr)
For Each key In arr
dic.Add(key, weighting)
weighting += 1
Next
For i As Integer = 0 To DataGridView1.Rows.Count - 1
Dim col1Cell = DataGridView1.Rows(i).Cells("Column1").Value.ToString
DataGridView1.Rows(i).Cells("Result").Value = dic(col1Cell)
Next
End Sub
结果: