这是我获得总和的方式
double? myVar = myList.Sum(x => x.MyItem);
如果.Sum()在同一行中返回0,是否可以用null替换myVar?
我不想使用
if(myVar == 0) myVar = null;
LINQ是否有条件后声明?
答案 0 :(得分: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;
}
然后:
double? myVar = myList.Sum(x => x.MyItem).NullIfDefault();
(代码NullIfDefault
的编码方式还有其他各种选项,例如使用Nullable<T>.GetValueOrDefault()
- 您可能想要找到最喜欢的形式。)