LINQ到SQL -VB.NET日期时间



我正在尝试显示dateTime.minvalue如果LastLogon日期在我的linq中为null到SQL查询。

Dim ExtUsrsQry = 
    (From qryItem In dc1.ExternalUserAccesses                                
     Where qryItem.QuarterId = GetCurrentQuarterId()
     Select Id = qryItem.Id,
         LastLogonDate = IIf((qryItem.LastLogonDate.HasValue), Convert.ToDateTime(qryItem.LastLogonDate).ToShortDateString(), DateTime.MinValue.ToShortDateString())
     ).ToList()

它不起作用。如何修复此查询?

我认为问题是来自SQL的NULL DATETIME,即DateTime? IN .NET。如果您使用Null Colescence

,您的代码将更简单,更清晰
Dim ExtUsrsQry =
    (From qryItem In dc1.ExternalUserAccesses
     Where qryItem.QuarterId = GetCurrentQuarterId()
     Select Id = qryItem.Id, LastLogonDate = If(qryItem.LastLogonDate, System.Data.SqlTypes.SqlDateTime.MinValue)
    ).ToList()

编辑

我更新了答案以使null合并if()返回 System.Data.SqlTypes.SqlDateTime.MinValue而不是.net等效。

最新更新