我的表级为
>Id Grade Name MinScore
1 A 90
2 B 70
3 C 60
4 D 50
如何找到标记为65/62的成绩为' C'使用linq查询(我没有字段最大分数)
答案 0 :(得分:1)
实现这一目标的最短途径是:
var mark = 65;
//'grades' represents the table
var letter = grades.Where(x => mark > x.MinScore).Min(x => x.GradeName);
.Where()
:首先仅过滤商标高于最低分数的项目.Min()
:然后取剩余项目的最低GradeName 如果等级的命名发生变化,而不是A,B,C ......,并且你不能再依赖于字母顺序了,那么这个可以帮助你:
var mark = grades.Where(x => mark > x.MinScore)
.OrderByDescending(x => x.MinScore)
.FirstOrDefault()?.GradeName;
.Where()
:首先仅过滤商标高于最低分数的项目.OrderByDescending()
:将商品从高到低排序.FirstOrDefault()
:从结果中获取第一项GradeName
属性请注意该行代码中的?
,即Null-conditional Operator。