如何从 IEnumerable 结果集中消除空值的可能性

How to obliterate possibility of nulls from IEnumerable resultset

如何在此处消除对 Any / null 的检查?

    public List<Incident> GetByServiceActivity(Guid serviceActivityGuid)
    {
        var result = from s in this._xrmServiceContext.ServiceAppointmentSet
                      join i in this._xrmServiceContext.IncidentSet on s.RegardingObjectId.Id equals i.Id
                      select i;

        return result.Any() ? result.Distinct().ToList() : new List<Incident>();
    }

我希望能够 return 只需 1 个这样的表达式:

return from s in this._xrmServiceContext.ServiceAppointmentSet
                          join i in this._xrmServiceContext.IncidentSet on s.RegardingObjectId.Id equals i.Id
                          select i;

我们如何才能 return 隐含地空,而不是必须检查 .Any()?

None 的 LINQ 方法中 return 一个 IEnumerable<T>ever return 一个 null 值.他们总是 return 一个 non-null IEnumerableIQueryable。它代表的序列可能是,但它永远不会是null.

至于处理空箱,没什么好处理的。您可以在空 sequence/query 上调用 Distinct 就像在 non-empty 上一样有效,您也可以从空序列或 non-empty 序列中创建列表ToList。您根本不需要检查任何东西。