获取值与值之间的数据

时间:2013-04-24 14:24:00

标签: c# linq dictionary

我有这本词典:

        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);

由于

1 个答案:

答案 0 :(得分:1)

您可以使用可空值,请记住null和not-null之间的任何类型的比较都将返回false。

如果你使Value2可以为空,那么你的情况会转变为:

2.1 >= d.Value.Value1 && !(2.1 >= d.Value.Value2)