【问题标题】:LINQ Max on nullable datatypes可空数据类型上的 LINQ Max
【发布时间】:2021-01-02 23:11:07
【问题描述】:

我有一个实体如下。

学校详情

ID Name Rank  School
1  A           Lawrence
2  B      1    Lawrence
3  C      2    Lawrence

我需要获取特定学校(劳伦斯)中排名最高的学生的详细信息。在此示例中,ID 2 是所需的输出。

我的 linq 查询是:

var result = SchoolDetails.Where(x=>x.School == "Lawrence").Max(y=>y.Rank).SingleOrDefault();

我收到一条编译消息说“int?不包含 SingleOrDefault 的定义”

我无法更改 Rank 列的数据类型以使其不可为空,因为它是生产代码。 那么,在这种情况下,我该如何获取排名最高的记录?

【问题讨论】:

  • 你不需要SingleOrDefault,使用Max max 返回最大值int? 而不是List
  • .Max 之前过滤null
  • @MohammadAli:我需要获取整个对象。
  • @user1907849 您可以按排名降序排列并获取第一个元素

标签: c# asp.net .net linq


【解决方案1】:

试试下面的

var result = SchoolDetails.Where(x=>x.School == "Lawrence").OrderByDescending(x => x.Rank).FirstOrDefault();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    相关资源
    最近更新 更多