Resharper 警告代码启发式无法访问

Resharper warning code heuristically unreachable

我有以下代码,想知道为什么根据 resharper 其他部分无法访问。

private bool SomeMEthod(some parameter)
{
    bool status = false; 
    var someCollection = _entity.CustomerPaymentStatus.Where(record => record.CustomerPaymentId == paymentId && record.CurrentRecord == true);
    if (someCollection != null)
    {
        var receivedPayment = someCollection.FirstOrDefault();
        /*some code to save data into DB*/
        status = true;
    }
    else
    {
        //Some code here to log failure scenario

        //here Resharper giving me warning
        //code is heuristically unreachable
    }
    return status;
}

我检查了几个 post 但不太清楚 Code is heuristically unreachable

任何想法请。

如果未找到匹配记录,Linq Where 查询将 return 为空 IEnumerable,因此 someCollection 永远是 [=13] 的可能性很小=] - 虽然 ReSharper 似乎并不完全确定它。

另见 MSDN Where

.Where() 从不 returns null,但总是 returns 一个 IEnumerable<T>(或 IQueryable<T>)。枚举可能有 0 个项目,但它仍然是一个非空可枚举。

假设 _entity 是一个 DbContext,那么总是 returns 一个 IQueryable 对象。

 IQueryable<T> someCollection = _entity.CustomerPaymentStatus.Where(...);

IQueryable 对象永远不会为 null(否则您将无法查询它)。

测试该对象的空值不会执行查询。所以

 if (someCollection != null)

相同
 if (true)