如果Sum()值返回Null使用0,目前它是否可以转换为可以为空的double?

Mar*_*tin 1 c# linq group-by nullable sum

我有一个LINQ语句,它工作得很好......它的选择就在这里

 select new
 {
     Net = (System.Double?)
     ((from m0 in MOVTOS
     where m0.DocumentType == "NET" && m0.ClientCode == c.ClientCode
     group m0 by new { 0.ClientCode } into g
     select new
     {
         Expr1 = (System.Double)g.Sum(p => p.Amount)
     }).First().Expr1)
};
Run Code Online (Sandbox Code Playgroud)

现在,如果你注意到我正在使用System.Double?(可以为空的双重)作为一个演员在乞讨,因为一些值在SUM上返回为NULL.

如果我将其更改为System.Double,则会失败并显示错误

无法将null值分配给类型为System.Double的成员,该成员是非可空值类型

所以我想要做的是返回SUM的值,但如果它是NULL,那么在那里输入0.

任何帮助真的很感激

Tho*_*que 5

使用null coalescing运算符:

double? nullable = null;
double notNullable = nullable ?? 0;
Run Code Online (Sandbox Code Playgroud)

在你的情况下:

select new
{
    Net =
        (from m0 in MOVTOS
         where m0.DocumentType == "NET" && m0.ClientCode == c.ClientCode
         group m0 by new { 0.ClientCode } into g
         select g.Sum(p => p.Amount) ?? 0).First()
};
Run Code Online (Sandbox Code Playgroud)