3
我有一些数据以这种形式(字典):查找哪个范围确实的值位于一个字典
Value0 Text1
Value1 Text2
Value2 Text3
Value3 Text4
Value4 Text5
我现在通过其可具有任何随机值的数组要循环。
foreach value in random array
{
if value is between (value0 && value1)
console.writeline(Text1)
if value is between (value1 && value2)
console.writeline(Text2)
if value is between (value2 && value3)
console.writeline(Text3)
if value is between (value3 && value4)
console.writeline(Text4)
}
我面临这里的问题是,对于所述阵列的每一个值,我应该能够检测什么范围为(大于值1大于值0更大和更小),因此得到相应的文本。但是,字典不是一个常数,可以有任意数量的值,因此如果条件如上所述我不能这样做。 (例如:字典可能有另一个条目Value5 Text6
)
什么是一个体面的方式来做到这一点?
你想使用一个有序的字典,然后通过设置记忆的最后一个键 - 值对条目进行迭代,你的值小于或等于至。然后,只要你找到一个比你的价值更大的钥匙,就会停下来并返回。然而,我不知道这是什么最好的C#数据结构 - SortedList?或者你可以从不同类型的字典中提取密钥,对它们进行排序并遍历它。 (理想情况下,您希望在没有完成迭代的情况下找到最大不超过的关键字,例如树状结构,但我不知道这样做的数据结构实现。) – Rup 2012-04-02 10:31:43