如您所知,有一种名为DefaultIfEmpty的扩展方法,基于文档:
DefaultIfEmpty :
返回指定序列的元素或类型参数 如果序列为空,则单个集合集合中的默认值。
因此,在这种情况下,如果序列为空,则返回默认值,例如,查看this答案:
opencall.Priority = averages.Where(x => x.ProblemCode == opencall.ProblemCode)
.Select(x => x.Priority)
.DefaultIfEmpty("")
.Single();
在这个例子中,如果averages为空,则返回一个空字符串,但是我想知道linq中是否存在类似extention方法的内容,以便如果preperty(x.Priority)为null,则返回默认值?
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";
...
我只是很想知道,有没有任何一种扩展方法可以做到这一点?
答案 0 :(得分:0)
您可以使用相同的DefaultOrEmpty
方法重载来提供默认值。在上面的查询中,因为我们正在尝试获取Priority
类型的String
属性。您可以在方法重载中提供String的默认值: -
opencall.Priority = averages.Where(x => x.ProblemCode == opencall.ProblemCode)
.Select(x => x.Priority)
.DefaultIfEmpty("High")
.Single();
对于不匹配的行,这将导致High
。