我有这个var activityGroup = context.Activity.Where(c => c.ActivityId == activityId).Select(c => c.ActivityGroupId);
如果没有ActivityGroupId
“for seome reason“(仍然不知道为什么),查询将返回一个列表,其中第一项为空...我如何检查该列表是否不是null
或是否有Any元素?
仅供参考
- 我知道
.Any()
的存在,但由于第一项为空,因此执行.Any()
将返回true
。 - 如果我这样做可以吗:
if (activityGroup.Contains(null)) { // do something here }
3条答案
按热度按时间tmb3ates1#
当问题要求访问列表中的第一项时,linq中有一个函数返回列表中的第一项。
请尝试以下操作:
还有另一个函数
FirstOrDefault()
,它允许在第一项为空时处理默认值的情况。更多关于此官方Microsoft Documentation的信息
但是,由于ActivityGroupId在第一个项目以外的其他项目中可能为null,因此您需要在where子句中检查其可为null性,如下所示:
csga3l582#
这是正确的语法,当ActivityGroupId为null时,其他建议的解决方案仍将引发null指针异常。
wa7juj8i3#
由于其中一个标签是“Entity Framework”,我建议在从数据库检索数据时使用过滤器的方法。如果您只对非空项感兴趣,可以扩展
Where
-子句:上述方法直接在数据库中进行过滤,以便仅传输包含
ActivityGroupId
的数据。