我有这种形式的一些数据(字典):
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)
}
我面临的问题是,对于数组的每个值,我应该能够检测到它的范围(大于值0且小于值1),从而得到相应的文本。但是,字典不是常数,可以有任意数量的值,因此如果条件如上,我就不能这些。
(例如:字典可能有另一个条目Value5 Text6
)
这样做的好方法是什么?
答案 0 :(得分:3)
您无法使用Dictionary<TKey,TValue>
执行此操作,因为它不会保留订购中的项目。但您可以使用SortedDictionary<TKey, TValue>
(或SortedList<TKey, TValue>
)来执行此操作:
TValue GetValue<TKey, TValue>(SortedDictionary<TKey, TValue> dictionary, TKey key)
{
var comparer = dictionary.Comparer;
TValue result = default(TValue);
foreach (var kvp in dictionary)
{
if (comparer.Compare(key, kvp.Key) < 0)
return result;
result = kvp.Value;
}
return result;
}