[英]How return IEnumerable<T>/IList<T> is null or value using null-coalescing operator
我想将空合并运算符与三个语句一起使用。
如果第一个列表返回 null 则返回第二个列表
如果第二个列表返回 null,则返回第三个列表
private IList<a> a => new IList<a>().ToList(); private IList<a> CalcDate { get { return a.Where(p => paLastDate.HasValue && paLastDateHasValue <= DateTime.Today) ?? a.Where(p => p.LastUpdateDate.HasValue && p.LastUpdateDate <= DateTime.Today) ?? a.Where(p => p.CreateDate.HasValue && p.CreateDate <= DateTime.Today); } }
我不想使用?:
运算符,因为我想保持代码简短。 请帮助我提供简短易读的代码和更多提示的想法
您可以添加自己的名为NullIfEmpty
的扩展方法,如下所示
public static class Extensions
{
public static IEnumerable<T> NullIfEmpty<T>(this IEnumerable<T> seq)
{
if (!seq.Any())
return null;
return seq;
}
}
然后你可以像这样使用这个方法:
return a.Where(...).NullIfEmpty()
?? a.Where(...).NullIfEmpty()
?? a.Where(...);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.