繁体   English   中英

如何返回 IEnumerable<T> /IList<T> 为空或使用空合并运算符的值

[英]How return IEnumerable<T>/IList<T> is null or value using null-coalescing operator

我想将空合并运算符与三个语句一起使用。

  1. 如果第一个列表返回 null 则返回第二个列表

  2. 如果第二个列表返回 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM