Возврат нулевого исключения в операторе linq - PullRequest
0 голосов
/ 10 сентября 2010

Вероятно, для этого есть очень простая причина, но при гидратации объекта я получаю исключение "значение не может быть нулевым":

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 равен нулю, LastMemberObject создает исключение не может быть пустым.В чем дело?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2010

Если MemberObjects имеет значение null, вы получите это исключение, если попытаетесь получить доступ к методу или свойству, например OrderByDescending. Попробуйте это:

[JsonProperty] public virtual SubObject LastMemberObject {
        get { return MemberObjects != null? MemberObjects.OrderByDescending(x => x.CreatedOn).FirstOrDefault() : null; }
    }
0 голосов
/ 10 сентября 2010

Если объект 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 ();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...