2010-09-10 86 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