如果属性为null,则返回默认值

时间:2015-10-04 15:41:10

标签: c# linq

如您所知,有一种名为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";
...

我只是很想知道,有没有任何一种扩展方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用相同的DefaultOrEmpty方法重载来提供默认值。在上面的查询中,因为我们正在尝试获取Priority类型的String属性。您可以在方法重载中提供String的默认值: -

opencall.Priority = averages.Where(x => x.ProblemCode == opencall.ProblemCode)
                            .Select(x => x.Priority)
                            .DefaultIfEmpty("High")
                            .Single();

对于不匹配的行,这将导致High