【发布时间】:2015-10-04 23:50:36
【问题描述】:
根据文档,您知道有一个名为 DefaultIfEmpty 的扩展方法:
DefaultIfEmpty:
返回指定序列的元素或类型参数的 如果序列为空,则为单例集合中的默认值。
所以这种情况下如果序列为空,则返回一个默认值,例如看this答案:
opencall.Priority = averages.Where(x => x.ProblemCode == opencall.ProblemCode)
.Select(x => x.Priority)
.DefaultIfEmpty("")
.Single();
在此示例中,如果平均值为空,则返回一个空字符串,但我想知道 linq 中是否有类似扩展方法的东西,以便如果 preperty (x.Priority) 为空,则返回默认值?
PS:我知道我们可以使用if 语句来检查:
opencall.Priority = averages.Where(x => x.ProblemCode == opencall.ProblemCode)
.Select(x => x.Priority)
.DefaultIfEmpty("")
.Single();
if (!string.IsNullOrWhiteSpace(opencall.Priority))
opencall.Priority = "Default value";
...
我只是想知道,有什么扩展方法可以做到这一点吗?
【问题讨论】:
-
你可以使用空合并运算符:
x => x.Priority ?? "" -
正如我提到的,我只是想这样做,我们如何使用像 DefaultIfEmpty 这样的扩展方法来做到这一点。顺便说一句,非常感谢你:)
-
DefaultIfEmpty 是关于序列为空,而不是为每个元素提供默认值。既然已经有 C# 运算符,为什么还要扩展方法?