2016-12-07 106 views
0

我试图检查为IEnuemrable<SystemUser>为null的类型。c#查看IEnumerable为空

我使用这段代码

  var systemUsers = newActActivityPersons.SelectMany(x => x.Person.SystemUsers); 
      if (systemUsers == null || !systemUsers.Any()) return ; 

这是行不通的。当我尝试执行类似systemUsers.ToArray()systemUsers.ToList()的操作时,我得到一个空例外。我如何检查这个错误?

+0

它不是'systemUsers',它是空的。调试器说什么? –

+1

您的支票没有问题。也许newActActivityPersons为null。 –

+1

SelectMany不会返回null,因此无论如何check都是多余的。如果'systemUsers.ToList()'抛出了一个NRE,之后它将被清空。发布一个更大的区块,显示在这里和发生异常的位置之间正在发生的事情。 –

回答

0

其中一个后续x.Person.SystemUsers可能为空。 .Any()如果有的话返回true。如果之后尝试ToList(),则可能会发现x谁的Person为空。

检查以确保x.Person在访问对象的属性之前不为空。

+0

谢谢,这很有道理。它解决了这个问题。 –