C# 我可以将post条件语句与LINQ一起使用吗?

C# 我可以将post条件语句与LINQ一起使用吗?,c#,linq,sum,conditional,C#,Linq,Sum,Conditional,我就是这样得到我的总数的 double? myVar = myList.Sum(x => x.MyItem); 如果.Sum()在同一行中返回0,是否可以将myVar替换为null 我不想用 if(myVar == 0) myVar = null; LINQ有post条件语句吗?听起来您想要空合并运算符的相反形式,而LINQ或C语言中都没有任何东西可以为您这样做。如果需要,您可以创建自己的扩展方法: public T? NullIfDefault<T>(this T? va

我就是这样得到我的总数的

double? myVar = myList.Sum(x => x.MyItem);
如果.Sum()在同一行中返回0,是否可以将myVar替换为null

我不想用

if(myVar == 0) myVar = null;

LINQ有post条件语句吗?

听起来您想要空合并运算符的相反形式,而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;
}

(关于如何编写
NullIfDefault
,还有许多其他选项,例如使用
Nullable.GetValueOrDefault()
——您可能想四处寻找您最喜欢的表单。)

MyItem的类型是什么?请注意,您的“我不想使用”似乎与此相反-从空到0,而不是从0到空。@JonSkeet这是一个
双精度?
我编辑了这个问题!那么,
if
语句有什么问题吗?非常感谢您的解释。
double? myVar = myList.Sum(x => x.MyItem).NullIfDefault();