Null value cannot be assigned

I have the following LINQ query:

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

The line where I get the maximum created date for the notes collection causes the following exception to be thrown:

Exception: The null value cannot be assigned to a member with type System.DateTime which is a non-nullable value type.

How do I write the query to allow null values into the LastNote field? The DOB field is defined as DateTime? and has not problem handling nulls.


Think I figured it out.

If I cast the maximum note value to a nullable DateTime it seems to eliminate the exception. The following change worked for me:

LastNote = (Nullable<DateTime>)contact.Notes.Max(n => n.Created)

As others have pointed out, it can also be written using the shorthand notation for a nullable DateTime as follows:

LastNote = (DateTime?) contact.Notes.Max(n => n.Created)

将该行重写为:

LastNote = (DateTime?) contact.Notes.Max(n => n.Created),

LastNote = contact.Notes.Max(n => (DateTime?)n.Created)

无法在网上找到这个,所以我希望这可以帮助其他人。

链接地址: http://www.djcxy.com/p/51352.html

上一篇: LINQ查询需要帮助

下一篇: 空值不能分配