2010-09-10 154 views
0

空的异常有可能是一个很简单的原因,但补水的对象,我不断收到一个“值不能为空”时异常:返回LINQ的声明

public class MyObject 
{ 
    public MyObject() { 
    } 

    public virtual IList<MemberObject> MemberObjects { get; protected set; }    

    [JsonProperty] public virtual SubObject LastMemberObject { 
     get { return MemberObjects.OrderByDescending(x => x.CreatedOn).FirstOrDefault() ?? null; } 
    } 
} 

当保湿的对象,如果MemberObjects为null,LastMemberObject引发一个不能为null的异常。这是怎么回事?

回答

0

如果MemberObjects为空,你会得到这个异常,如果您尝试访问。方法或属性如OrderByDescending尝试这种情况:

[JsonProperty] public virtual SubObject LastMemberObject { 
     get { return MemberObjects != null? MemberObjects.OrderByDescending(x => x.CreatedOn).FirstOrDefault() : null; } 
    } 
+0

我KNE。这很简单!谢谢。 – 2010-09-10 17:17:37

0

如果对象MemberObjects为空,则无法调用其上的任何实例方法。

[JsonProperty] 
public virtual SubObject LastMemberObject { 
    get { 
     return MemberObjects != null 
      ? MemberObjects.OrderByDescending(x => x.CreatedOn).FirstOrDefault() 
      : null; } 
    } 

而且,当你调用FirstOrDefault()方法,这种“默认必须和指定。

MemberObjects 
.OrderByDescending (x => x.CreatedOn) 
.Default (something) 
.FirstOrDefault(); 
+0

'OrderByDescending'没有一个实例方法,它是在一个静态类定义的扩展方法 – Greg 2010-09-10 15:58:53