我可以使用LINQ的条件后语句吗?

Ale*_*lex 4 c# linq conditional sum

这就是我得到的总和

double? myVar = myList.Sum(x => x.MyItem);
Run Code Online (Sandbox Code Playgroud)

如果.Sum()在同一行中返回0,是否可以用null替换myVar?

我不想用

if(myVar == 0) myVar = null;
Run Code Online (Sandbox Code Playgroud)

LINQ是否有条件后声明?

Jon*_*eet 5

听起来你想要与null-coalescing运算符相反,并且在LINQ或C#语言中都没有为你做这件事.如果您愿意,可以创建自己的扩展方法:

public T? NullIfDefault<T>(this T? value) where T : struct
{
    if (value == null)
    {
        return value;
    }
    return EqualityComparer<T>.Default.Equals(default(T), value.Value)
        ? null : value;
}
Run Code Online (Sandbox Code Playgroud)

然后:

double? myVar = myList.Sum(x => x.MyItem).NullIfDefault();
Run Code Online (Sandbox Code Playgroud)

(您可以NullIfDefault使用各种其他选项进行编码,例如使用Nullable<T>.GetValueOrDefault()- 您可能想要找到最喜欢的表单.)