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),则将选择最大范围