为什么Enumerable.Count()抛出`InvalidOperationException`将`null`转换为`bool`?

Mar*_*tin 2 .net c# ienumerable

任何人都可以解释以下声明如何生成

System.InvalidOperationException:值null不会被赋予System.Boolean类型的成员,因为它是一个不能具有null值的值类型(从瑞典语(另请参见)自由翻译).

if (user.Friends.Count() == 0)
Run Code Online (Sandbox Code Playgroud)

用户是用户,朋友是用户IEnumerable<User>.

更新:朋友从linq返回到sql调用,实际上是一个WhereSelectEnumerableIterator.在这种情况下它是空的,所以我曾期望上面评估为真.如果朋友不是空的,这种方法很好.因此,出于某种原因,当它出现空洞的情况下降时,很高兴知道原因,但我想我真正要问的是,解决方法是什么?

Sam*_*ell 8

user.Friends是一个惰性计算的枚举(yield return或Linq查询),评估中的内容是抛出异常.没有更多的代码,就不可能确切地说出来.