C# 如何从IEnumerable resultset中删除空值的可能性

C# 如何从IEnumerable resultset中删除空值的可能性,c#,.net,visual-studio,dynamics-crm-2011,c#-5.0,C#,.net,Visual Studio,Dynamics Crm 2011,C# 5.0,如何消除此处的任何/null检查? public List<Incident> GetByServiceActivity(Guid serviceActivityGuid) { var result = from s in this._xrmServiceContext.ServiceAppointmentSet join i in this._xrmServiceContext.IncidentSet on

如何消除此处的任何/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>();
    }

我们如何隐式返回空值,而不必检查.Any()?

返回
IEnumerable
的LINQ方法都不会返回
null
值。它们总是返回非null的
IEnumerable
IQueryable
。它所表示的序列可能为空,但它永远不会为空


至于处理这个空箱子,没有什么可处理的。您可以对空序列/查询调用
Distinct
,就像对非空序列/查询调用一样有效,您还可以使用
ToList
从空序列或非空序列创建列表。您根本不需要检查任何内容。

Select
如果找不到结果集,将始终返回一个空枚举。因此,您可以执行
返回操作(从xrmServiceContext.ServiceAppointSet中的s返回)s.RegardingObjectId.Id等于i.Id选择i.ToList()
或更改方法以返回
公共IEnumerable GetByServiceActivity(Guid serviceActivityGuid)
当然,除了像
FirstOrDefault
这样返回单个实例或null/zero的方法。这可能是null吗?:var result=(来自_cmContext.SrvLocationWarmLine where String.Compare(number.CurrentWarmLine,startingRange,StringComparison.Ordinal)中的数字)>=0&&String.Compare(number.CurrentWarmLine,endingRange,StringComparison.Ordinal)@MeggieLuski是的,因为它不返回序列,它从该序列返回单个值。
return from s in this._xrmServiceContext.ServiceAppointmentSet
                          join i in this._xrmServiceContext.IncidentSet on s.RegardingObjectId.Id equals i.Id
                          select i;