我有这本词典:
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 });
使用查询语法我正在检查值是否在其中一个值之间,或者如果大小写是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 :(得分:1)
您可以使用可空值,请记住null和not-null之间的任何类型的比较都将返回false。
如果你使Value2可以为空,那么你的情况会转变为:
2.1 >= d.Value.Value1 && !(2.1 >= d.Value.Value2)