LINQ-如果找不到行,则从字段返回最大值

LINQ-如果找不到行,则从字段返回最大值,linq,Linq,我有一张这样的桌子 ID Description LowThreshold HighThreshold 1 BAD 0.0 .69 2 MEETS .70 .89 3 GOOD .90 2 这里的目标是编写一个LINQ查询,根据给定的小数选择正确的描述。例如.75介于.70和.89之间,因此它将返回“MEETS”。但是,如果数字高于所有范围,则kicke

我有一张这样的桌子

ID   Description  LowThreshold   HighThreshold
1    BAD          0.0            .69
2    MEETS        .70            .89
3    GOOD         .90            2
这里的目标是编写一个LINQ查询,根据给定的小数选择正确的描述。例如.75介于.70和.89之间,因此它将返回“MEETS”。但是,如果数字高于所有范围,则kicker会自动返回具有最高HighThreshold的记录的描述。所以,如果我通过5,我应该得到“好”的回报

到目前为止,我已经知道了,但它的分数高于2,显然:

private string GetEvaluationDescription (decimal score)
{
      string evaluationText = myContext.PerformanceRanges.Where
                        (e =>
                              e.LowThreshold <= score
                              &&
                              e.HighThreshold >= score
                        )
                        .Select(eval => eval.Description).First().ToString();
}
私有字符串GetEvaluationDescription(十进制分数)
{
字符串evaluationText=myContext.PerformanceRanges.Where
(e=>
e、 低阈值=分数
)
.Select(eval=>eval.Description).First().ToString();
}
我想通过这一个查询来完成这一点,但我的想象力并没有让我达到目的。我尝试了我在帖子中找到的东西,但没能让它工作

这个怎么样:

  string evaluationText = myContext.PerformanceRanges.Where
                    (e =>
                          (e.LowThreshold <= score
                          &&
                          e.HighThreshold >= score) || 
                         (e.HighThreshold == 
                            myContext.PerformanceRanges.Max (
                                  x => x.HighThreshold) 
                            && score > e.HighThreshold )
                    )
                    .Select(eval => eval.Description).First().ToString();
var range = myContext.PerformanceRanges
            .SingleOrDefault(e=>e.LowThreshold <= score && e.HighThreshold >= score)??
            PerformanceRanges.Single(
                                      e=>e.HighThreshold == PerformanceRanges
                                                            .Max(p=> p.HighThreshold)
                                    );

string evaluationText = range.Description;
string evaluationText=myContext.PerformanceRanges.Where
(e=>
(e.低阈值=分数)|
(e.HighThreshold==
myContext.PerformanceRanges.Max(
x=>x.HighThreshold)
&&分数>e.HighThreshold)
)
.Select(eval=>eval.Description).First().ToString();
这个怎么办:

  string evaluationText = myContext.PerformanceRanges.Where
                    (e =>
                          (e.LowThreshold <= score
                          &&
                          e.HighThreshold >= score) || 
                         (e.HighThreshold == 
                            myContext.PerformanceRanges.Max (
                                  x => x.HighThreshold) 
                            && score > e.HighThreshold )
                    )
                    .Select(eval => eval.Description).First().ToString();
var range = myContext.PerformanceRanges
            .SingleOrDefault(e=>e.LowThreshold <= score && e.HighThreshold >= score)??
            PerformanceRanges.Single(
                                      e=>e.HighThreshold == PerformanceRanges
                                                            .Max(p=> p.HighThreshold)
                                    );

string evaluationText = range.Description;
var range=myContext.PerformanceRanges
.SingleOrDefault(e=>e.LowThreshold=分数)??
表演,单人(
e=>e.HighThreshold==PerformanceRanges
.Max(p=>p.HighThreshold)
);
字符串evaluationText=range.Description;
range
查询将选择与阈值范围匹配的元素,如果值更大(第一个查询将返回null),则将选择最大范围