2013-04-24 3 views
1

У меня есть этот словарь:Получение данных между значениями и больше, чем

 Dictionary<char, ValuePair> dictionary = new Dictionary<char, ValuePair>(); 

С следующую структуру:

struct ValuePair 
{ 
    public double Value1; 
    public double Value2; 
} 

со следующими значениями:

 dictionary.Add('A', new ValuePair { Value1 = 0.0, Value2 = 1.0 }); 
     dictionary.Add('B', new ValuePair { Value1 = 1.0, Value2 = 1.2 }); 
     dictionary.Add('C', new ValuePair { Value1 = 1.2, Value2 = 1.4 }); 
     dictionary.Add('D', new ValuePair { Value1 = 1.4, Value2 = 1.6 }); 

     dictionary.Add('E', new ValuePair { Value1 = 1.6, Value2 = 1.8 }); 
     dictionary.Add('F', new ValuePair { Value1 = 1.8, Value2 = 2.0 }); 
     dictionary.Add('G', new ValuePair { Value1 = 2.0, Value2 = double.MaxValue }); 

С запросом синтаксиса I 'Проверяем, находится ли значение между одним из значений, или если случай равен G, он должен быть больше 2.0. Мне не нравится решение с double.MaxValue. Есть ли другой путь?

 var getValue = (from d in dictionary 
         where 2.1 >= d.Value.Value1 && 2.1 < d.Value.Value2 
         select d.Key).FirstOrDefault(); 

     Console.WriteLine(getValue); 

Благодаря

+0

Что именно вам не нравится в 'решении double.MaxValue'? По-видимому, ясно, какое максимальное значение для выбора. –

+0

Кажется странным в проекте экзаменов, где значения очень малы, чтобы использовать число, такое большое, как double.MaxValue – user2315973

ответ

1

Вы можете использовать NULLABLE значения, имея в виду, что любой тип сравнения между нулевым и не-нуль вернет ложь.

Если вы Value2 обнуляемым, ваше состояние превратится в нечто вроде:

2.1 >= d.Value.Value1 && !(2.1 >= d.Value.Value2) 
Смежные вопросы