我有以下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)
将该行重写为:
LastNote = (DateTime?) contact.Notes.Max(n => n.Created),
Run Code Online (Sandbox Code Playgroud)