以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  帮忙解释一下  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=196206)

--  作者:ZJZK2018
--  发布时间:2025/4/8 22:58:00
--  帮忙解释一下
帮忙解释一下,下面代码中红色部分的代码是什么意思,谢谢

Dim drs As List(Of DataRow) = DataTables("标录明细").Select("[有效评标价] > 0 And [项目名称] = \'半山单元高中(暂名) 监理\'", "有效评标价 DESC")

Dim n As Integer = Round2(drs.Count * 0.1,0)

 

If drs.Count >= n *2 Then

    \'▂▂▂▂▂▂▂ 去除极端值 ▂▂▂▂▂▂▂

    drs.RemoveRange(0, n) \'直接移除区间

    drs.RemoveRange(drs.Count - n, n)

   

    \'▂▂▂▂▂▂▂ 计算平均值 ▂▂▂▂▂▂▂

    Dim sum As Double = 0

    For Each dr As DataRow In drs

        sum += dr("有效评标价")

    Next

    Dim avg As Double = sum / drs.Count

    avg = avg * 0.98   下浮系数2%

    msgbox(avg)

    \'▂▂▂▂▂▂▂ 集合方式筛选 ▂▂▂▂▂▂▂

    Dim diffDict As New Dictionary(Of DataRow, Double)

    For Each dr As DataRow In drs

        diffDict(dr) = Math.Abs(dr("有效评标价") - avg)

    Next

   

    Dim entryList As New List(Of KeyValuePair(Of DataRow, Double))(diffDict)

    entryList.Sort(Function(x, y) x.Value.CompareTo(y.Value))

   

    \'▂▂▂▂▂▂▂ 生成结果表 ▂▂▂▂▂▂▂

    For i As Integer = 0 To Math.Min(14, entryList.Count - 1)

        Dim drSource = entryList(i).Key

       

        Output.Show(drSource("投标单位") & "=" & drSource("有效评标价"))

    Next

    MessageBox.Show("处理完成,平均值:{avg:N2}")

Else

    MessageBox.Show("有效数据不足")

End If



--  作者:有点蓝
--  发布时间:2025/4/8 23:04:00
--  
这个是.net的语法。就是把字典【Dim diffDict As New Dictionary(Of DataRowDouble)】的键值对转换为集合,然后根据每一项的键值对的【Double】值进行排序