谁能解释一下以下语句到底是如何生成的
System.InvalidOperationException:未将值NULL分配给类型为System.Boolean的成员,因为它是不能具有值NULL(从瑞典语自由翻译(see also))的值类型。
if (user.Friends.Count() == 0)
用户是用户,朋友是IEnumerable<User>
。
更新:Friends是从Linq to SQL调用返回的,实际上是WhereSelectEnumerableIterator
。在这种情况下,它是空的,所以我原以为上面的计算结果为真。在Friends不为空的情况下,此功能可以很好地工作。因此,由于某种原因,当它空荡荡的破坏下降时,知道原因是很好的,但我想我真正想问的是,解决办法是什么?
正如我在对280Z28的评论中所写的,Getter如下所示。
public IEnumerable<User> Friends
{
get
{
var friends = from u2g in FriendUserGroup.User2GroupLinks
select u2g.User;
return friends;
}
}
FriendUserGroup.User2GroupLinks是EntitySet。它的Count属性引发了异常。Any()也会,如果有人想知道的话。相反,您需要做的是检查HasLoadedOrAssignedValues。所以我插入了
if (!FriendUserGroup.User2GroupLinks.HasLoadedOrAssignedValues)
return null;
在上面的getter中。
我讨厌在别人努力的时候回答自己的问题。感谢您的所有投入!