我有一个这样的集合
Private Shared ReadOnly thermoPaths As New ReadOnlyCollection(Of String) _
({
"thermometer_000_108x320.jpg",
"thermometer_010_108x320.jpg",
"thermometer_020_108x320.jpg",
"thermometer_030_108x320.jpg",
"thermometer_040_108x320.jpg",
"thermometer_050_108x320.jpg",
"thermometer_060_108x320.jpg",
"thermometer_070_108x320.jpg",
"thermometer_080_108x320.jpg",
"thermometer_090_108x320.jpg",
"thermometer_100_108x320.jpg"
})
并希望将1到100之间的小数值链接到我的集合中的相应项目。
所以基本上我想要实现的就是这个。
Select Case Decimal.Round(value)
Case 1 To 9
Dim x As String = thermoPaths(0)
Case 10 To 19
Dim x As String = thermoPaths(1)
Case 20 To 29
Dim x As String = thermoPaths(2)
Case 30 To 39
Dim x As String = thermoPaths(3)
case ''AND SO ON
End Select
但我确信必须有一种“更清洁”的方法吗?
答案 0 :(得分:1)
只需划分并向上舍入即可获得索引。
i = Math.Ceiling(value / 10)
If value >= 0 AndAlso i < thermoPaths.Count Then
path = thermoPaths(i)
Else
path = Nothing
End If
一些测试点:
value i path
-1 0 <null> (because value < 0)
0 0 thermometer_000_108x320.jpg
1 1 thermometer_010_108x320.jpg
5 1 thermometer_010_108x320.jpg
10 1 thermometer_010_108x320.jpg
49 5 thermometer_050_108x320.jpg
51 6 thermometer_060_108x320.jpg
90 9 thermometer_090_108x320.jpg
91 10 thermometer_100_108x320.jpg
100 10 thermometer_100_108x320.jpg
101 11 <null> (because i > 10)
答案 1 :(得分:0)
将值除以10,然后得到底线,应该给你适当的索引。