以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 如何在集合求最小值后要找到最小值的来源 (http://foxtable.com/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 -- 谢谢老师,后来我想到用一个临时表,对应存放数据,也能解决了 |