C#Entity Framework在不可为空的字段的过滤器之后选择max

Ham*_*mid 2 c# entity-framework nullable max where

我有一个不可空的字段(Num)

class MyTable
{
    //...
    public int Num { get; set; }
    public string Category { get; set; }
    //...
}
Run Code Online (Sandbox Code Playgroud)

想找到最大NumCategory == "A"

var maxnum = myTable
   .Where(r => r.Category == "A")
   .Max(r => r.Num);
Run Code Online (Sandbox Code Playgroud)

当没有任何记录时,问题就出现了category == "A".因为结果Where()为null所以结果Max()将为null但是当Num不可为空时发生异常.

我可以通过Num在表设计中设置为可空来修复它,但我不喜欢这个解决方案,虽然它Num应该有价值,不应该是可空的.

有什么建议吗?有没有办法我接受Num的空值而Num不可为空?或任何更好的查询?

Cyr*_*lin 9

int maxShoeSize = Workers.Where(x => x.CompanyId == 8)
                     .Select(x => x.ShoeSize)
                     .DefaultIfEmpty(0)
                     .Max();
Run Code Online (Sandbox Code Playgroud)

请参阅:如果为空查询,则返回最大值