Linq加入时间错误

时间:2014-12-06 04:01:26

标签: c# linq linq-to-sql

我尝试使用表格上的联接创建列表。我已经注释掉了不起作用的代码,但这是我需要的代码。当我运行这个时,我得到一个施法日期错误。我想知道我是否应该尝试使用此连接获取数据或运行此结果的子查询,我无法弄清楚该怎么做。

如果BeingSeen为null,那么我希望新对象中的BeingSeen属性为null。

有关填写此内容的正确方法的任何建议' BeingSeen'属性?

                object PatientsNotSeen;
                using (var db = new SyDbConn())
                {
                    PatientsNotSeen = (from events in db.Events
                        where
                            events.ClinicId == clinicId && events.StatusId != 6 &&
                            DbFunctions.TruncateTime(events.stime) == DbFunctions.TruncateTime(DateTime.Now)
                        //join beingSeen in db.BeingSeenStatus on events.PatientId equals beingSeen.PatientId into caa
                        //from beingSeen in caa.DefaultIfEmpty()
                        select new
                        {
                            PatientID = events.PatientId,
                            events.PatientName,
                            AppointmentTime = events.stime,
                            // BeingSeen = beingSeen.TimeStarted
                        }).ToList();
                }

取消注释评论并运行时,这是错误:

Additional information: The cast to value type 
'System.DateTime' failed because the materialized value is null. Either the result type's generic 
parameter or the query must use a nullable type.

1 个答案:

答案 0 :(得分:1)

您可以使用Null Coalesce运算符: -

BeingSeen = beingSeen.TimeStarted ?? DateTime.MinValue

如果TimeStarted属性不是Nullable,那么只需输入它: -

BeingSeen = (DateTime?)beingSeen.TimeStarted ?? DateTime.MinValue