【发布时间】:2017-04-21 19:32:53
【问题描述】:
我正在尝试检查 IEnuemrable<SystemUser> 的类型是否为空。
我正在使用这段代码
var systemUsers = newActActivityPersons.SelectMany(x => x.Person.SystemUsers);
if (systemUsers == null || !systemUsers.Any()) return ;
这是行不通的。当我尝试执行systemUsers.ToArray() 或systemUsers.ToList() 之类的操作时,我得到一个空异常。我怎样才能检查这是否有错误?
【问题讨论】:
-
不是
systemUsers为空。调试器说什么? -
您的检查没有问题。也许 newActActivityPersons 为空。
-
SelectMany 不返回 null,因此无论如何检查都是多余的。如果
systemUsers.ToList()正在抛出一个 NRE,它会在之后被清空。发布一个更大的块,显示在此处和您获得异常的位置之间发生的事情。 -
Duplicate 展示了如何做你所问的。请注意,您的帖子可能与您遇到的问题无关,@SaebAmini 的评论可能是解释。如果您仍有问题,请随时通过minimal reproducible example 提出新问题。
-
systemUsers 不为空,因此 systemUsers.Any() 未执行,因此在尝试枚举后会出现异常,因为在尝试访问 .SystemUsers 之前 x.Person 返回了一个空值
标签: c# ienumerable