简体   繁体   English

在linq语句上返回null异常

[英]Returning null exception on linq statement

There's probably a very simple reason for this, but when hydrating an object I'm keep getting a "value cannot be null" exception: 可能有一个非常简单的原因,但是在给对象补水时,我会不断收到“值不能为null”异常:

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; }
    }
 }

When hydrating the object, if the MemberObjects is null, LastMemberObject throws a cannot be null exception. 对对象进行水合作用时,如果MemberObjects为null,则LastMemberObject将引发一个不能为null的异常。 What's the deal? 这是怎么回事?

If the object MemberObjects is null, you can't call any instance methods on it. 如果对象MemberObjects为null,则不能在其上调用任何实例方法。

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

Also, when you're calling the FirstOrDefault() method, this "default has to be specified as well. 另外,当您调用FirstOrDefault()方法时,还必须指定此“默认值”。

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

If MemberObjects is null you will get this exception if you attempt to access a method or property such as OrderByDescending. 如果MemberObjects为null,则尝试访问诸如OrderByDescending之类的方法或属性时,将获得此异常。 Try this: 尝试这个:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM