无法分配空值 - LINQ查询问题

jos*_*shb 10 linq

我有以下LINQ查询:

DataClassesDataContext dc = new DataClassesDataContext(); 
var query = from contact in dc.Contacts
            select new
            {
                ContactId = contact.ContactId,
                LastName = contact.LastName,
                FirstName = contact.FirstName,
                Addresses = contact.Addresses,
                Phones = contact.Phones,
                DOB = contact.BirthDate,
                LastNote = contact.Notes.Max(n => n.Created), //this line causes the error
                Status = contact.ContactStatus.ContactStatusName,
                EmailAddress = contact.Emails
            };
Run Code Online (Sandbox Code Playgroud)

我获得notes集合的最大创建日期的行会导致抛出以下异常:

异常:无法将null值分配给类型为System.DateTime的成员,该类型是不可为空的值类型.

如何编写查询以允许空值进入LastNote字段?DOB字段定义为DateTime?并没有处理空值的问题.

jos*_*shb 23

想想我明白了.

如果我将最大音符值转换为可以为空的DateTime,它似乎消除了异常.以下更改对我有用:

LastNote = (Nullable<DateTime>)contact.Notes.Max(n => n.Created)
Run Code Online (Sandbox Code Playgroud)

正如其他人所指出的那样,它也可以使用可以为空的DateTime的简写表示法编写,如下所示:

LastNote = (DateTime?) contact.Notes.Max(n => n.Created)
Run Code Online (Sandbox Code Playgroud)

  • 我正要暗示这一点 (2认同)

Kel*_*tex 9

将该行重写为:

LastNote = (DateTime?) contact.Notes.Max(n => n.Created),
Run Code Online (Sandbox Code Playgroud)