2013-02-16 92 views
0

我有公寓和办公室,每个办公室都有经理。无法检查儿童/孙子女?

当经理登录时,我想向他们显示与其公寓或办公室有关的信息。

我试图构造查询如下所示:

query = Buildings.Where(i => i.Apartment.Manager.Id == User.Id); 

但这如果Manager是公寓的管理者才会工作。如果他们不是,我会得到一个nullReferenceException,因为i.Apartment对于一半建筑物将是空的。

如何检查此查询中的空位以避免在经理没有公寓或没有建筑物的情况下出现异常?

+0

在linq查询期间或之后,您是否遇到异常? – 2013-02-16 16:39:45

+0

在此期间,我相信因为它遍历了寻找Building.property.subproperty的建筑物,其中许多建筑物的第一个属性为NULL。 – user2062383 2013-02-16 16:45:27

回答

1
query = Buildings.Where(i => 
    i.Apartment != null && 
    i.Apartment.Manager.Id == User.Id); 
+0

甜美!没想到会那么简单。谢谢。 – user2062383 2013-02-16 16:58:41

+0

使用你的解决方案我从resharper得到以下警告:http://stackoverflow.com/questions/14912830/possible-multiple-enumeration-of-ienumerable-while-checking-for-children-grandch – user2062383 2013-02-16 17:04:58