以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何在集合求最小值后要找到最小值的来源  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=145566)

--  作者:老蜗牛
--  发布时间:2020/1/30 22:30:00
--  如何在集合求最小值后要找到最小值的来源
Dim ll As WinForm.TextBox = e.Form.Controls("TextBox17")
Dim aa As WinForm.TextBox = e.Form.Controls("TextBox18")
Dim bb As WinForm.TextBox = e.Form.Controls("TextBox19")
Dim des As New List(Of Double)
For Each dr As Row In Tables("配方颜色表")
       des.Add(math.sqrt((ll.value - dr("L值"))^2 + (aa.value - dr("A值"))^2 +(bb.value - dr("B值"))^2))
Next
    des.Sort
Dim min As Double = des(0)
配方颜色表 只有四列 :配方单号,L,A,B值,窗口中设置了三个文本框,作为比较值分别对应L,A,B,我的目的是要找到与比较值最接近的配方单号,上面的代码,我找到了与比较值计算后的最小值,但是不知道怎么再对应回颜色配方表中去,请老师指点下,谢谢!


--  作者:有点蓝
--  发布时间:2020/1/30 22:57:00
--  
Dim sd As New SortedDictionary(Of Double, String)
Dim ll As WinForm.TextBox = e.Form.Controls("TextBox17")
Dim aa As WinForm.TextBox = e.Form.Controls("TextBox18")
Dim bb As WinForm.TextBox = e.Form.Controls("TextBox19")

For Each dr As Row In Tables("配方颜色表")
    Dim key As Double = math.sqrt((ll.value - dr("L值"))^2 + (aa.value - dr("A值"))^2 +(bb.value - dr("B值"))^2)
    If sd.ContainsKey(key) = False Then
        sd.Add(key,dr)
    End If
Next
Dim min As Double = sd.keys(0)
Dim minRow As Row = sd(sd.keys(0))


--  作者:老蜗牛
--  发布时间:2020/1/31 8:15:00
--  
谢谢老师,后来我想到用一个临时表,对应存放数据,也能解决了