我正在处理一个列表,以便在应用如下所示的过滤器后进行计数
ValueRaw = pCounts.Count() > 0 ? pCounts.SingleOrDefault(x => x.IsNew)?.Count : 0
Run Code Online (Sandbox Code Playgroud)
上面的行返回null时pCounts.SingleOrDefault(x => x.IsNew)为空
如何将其更改为返回0而不是null
你可以这样做(你不需要第一次检查):
ValueRaw = pCounts.SingleOrDefault(x => x.IsNew)?.Count ?? 0;
Run Code Online (Sandbox Code Playgroud)
这使用了空煤化算子(见这里).如果它不为null,则取其剩下的值,否则为其右边的值.
但是,您当然可以使用条件标记来编写它:
var temp = pCounts.SingleOrDefault(x => x.IsNew)?.Count;
ValueRaw = temp == null ? 0 : temp;
Run Code Online (Sandbox Code Playgroud)
甚至更长的if:
var temp = pCounts.SingleOrDefault(x => x.IsNew)?.Count;
if(temp == null)
ValueRaw = 0;
else
ValueRaw = temp;
Run Code Online (Sandbox Code Playgroud)