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

本文关键字:返回 默认值 属性 如果 | 更新日期: 2023-09-27 18:16:00

根据文档,有一个名为DefaultIfEmpty的扩展方法:

DefaultIfEmpty :

返回指定序列或类型参数的元素如果序列为空,则为单例集合中的默认值。

所以在这种情况下,如果序列是空的,它返回一个默认值,例如,看看这个答案:

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

在这个例子中,如果平均值是空的,它返回一个空字符串,但是我想知道是否有一个类似于linq中的扩展方法,这样如果属性(x.p 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";
...

我只是想知道,有没有一种扩展方法来做到这一点?

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

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

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

这将导致不匹配行的High