我有以下查询:
var maxNumber = dbContext.Where(a => a.Id == 9).Max(a => a.Sample_Num);
Run Code Online (Sandbox Code Playgroud)
如果没有9的Id,我会收到错误.如果没有ID为9,我喜欢将结果默认为0.
我试过了:
var maxNumber = dbContext.Where(a => a.Id == 9).Max(a => a.Sample_Num) ?? 0;
Run Code Online (Sandbox Code Playgroud)
以及其他变化,但无法使其工作
Tim*_*ter 75
你可以Any用来检查是否有匹配的元素:
int maxNumber = 0;
var id9 = dbContext.Where(a => a.Id == 9);
if(id9.Any())
{
maxNumber = id9.Max(a => a.Sample_Num);
}
Run Code Online (Sandbox Code Playgroud)
或者您可以使用DefaultIfEmpty(defaultValue):
int maxNumber = dbContext
.Where(a => a.Id == 9)
.Select(a => a.Sample_Num)
.DefaultIfEmpty(0)
.Max();
Run Code Online (Sandbox Code Playgroud)
小智 6
只需使用 Max 的可为空版本(即使聚合的值不可为空):
var maxNumber = dbContext.Where(a => a.Id == 9).Max(a => (int?)a.Sample_Num) ?? 0;
这几乎是 Nate 尝试过的。关键是 Max of nullables 结果从空集合中给出 null,而 Max of ints 给出异常,因为它的返回值是集合的现有 int。通过显式声明该类型的结果,您将其强制为 Max<int?>。然后您可以在 ?? 之后指定所需的默认值。
| 归档时间: |
|
| 查看次数: |
12881 次 |
| 最近记录: |