Linq Max具有默认值

sco*_*kes 1 linq

我试图获取用户的上次登录日期,如果不存在登录记录,则返回今天的日期.到达那里我需要一些帮助.我收到以下错误,甚至没有默认值组件.

无法将类型'System.Linq.IQueryable'隐式转换为'System.DateTime?'

DateTime? logdate = from userlog in
                                    (from userlog in db.UserLogEntities
                                     where
                                       userlog.UserID == 1 &&
                                       userlog.Action == "Logon" &&
                                       userlog.ActionTag == "Success"
                                     select new
                                     {
                                         userlog.LogDate,
                                         Dummy = "x"
                                     })
                                group userlog by new { userlog.Dummy } into g
                                select new
                                {
                                    Column1 = (DateTime?)g.Max(p => p.LogDate)
                                };
Run Code Online (Sandbox Code Playgroud)

sco*_*kes 8

以下是我提出的建议.如果有更好的方法,请告诉我.

LastLogin = (from ul in db.UserLogEntities
                                 where ul.UserID == u.UserID &&
                                    ul.Action == "Logon" &&
                                    ul.ActionTag == "Success"
                                 select ul.LogDate).DefaultIfEmpty(DateTime.Now).Max()
Run Code Online (Sandbox Code Playgroud)