Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Linq查询查找分数范围(没有最大分数)_C#_Linq - Fatal编程技术网

C# 如何使用Linq查询查找分数范围(没有最大分数)

C# 如何使用Linq查询查找分数范围(没有最大分数),c#,linq,C#,Linq,我有一个表级和 >Id Grade Name MinScore 1 A 90 2 B 70 3 C 60 4 D 50 如何使用linq查询(我没有字段最大分数)找到65/62分为“C”的成绩实现这一目标的最短方法是: var mark = 65; //'grades' represents the table var letter = grades.Where(x =>

我有一个表级和

>Id  Grade Name MinScore
 1    A           90
 2    B           70
 3    C           60
 4    D           50

如何使用linq查询(我没有字段最大分数)找到65/62分为“C”的成绩实现这一目标的最短方法是:

var mark = 65;
//'grades' represents the table
var letter = grades.Where(x => mark > x.MinScore).Min(x => x.GradeName);
  • .Where()
    :首先只过滤分数高于最低分数的项目
  • .Min()
    :然后取剩余项目的最低等级名称
编辑: 如果年级的命名发生变化,而不是A、B、C、。。。你不能再依赖字母顺序了,那么这个可以帮你:

var mark = grades.Where(x => mark > x.MinScore)
                 .OrderByDescending(x => x.MinScore)
                 .FirstOrDefault()?.GradeName;
  • .Where()
    :首先只过滤分数高于最低分数的项目
  • .OrderByDescending()
    :按从高到低的顺序排列项目
  • .FirstOrDefault()
    :从结果中获取第一项
  • 获取
    GradeName
    属性

注意那行代码中的
,这是一个

不明白:标记65/62为“C”。请详细说明can@TejasVaishnav当前位置我相信这些是分数阈值。90或以上是A,70到89是B,60到69是C,50到59是D。不确定如果低于50会发生什么…第二位代码还有一个优点,它可以更好地处理分数低于50的情况。