1

请使用 linq 从数据库中提取一些数据到实体。从查询结果中,我创建一个集合并绑定到一个 gridview 控件。问题是数据库中的一个日期列中的一些值是空的,当我做一个tostring 它给了我一个例外。下面是我用来从数据库中获取数据的第一个查询。

    Dim sSession = From ses In DemoSchool.Terms
                   Select New With {Key .Session = ses.Session,
                                    Key .Term = ses.Term1,
                                    Key .StartDate = ses.StartDate,
                                    Key .EndDate = ses.EndDate,
                                    Key .NextTerm = ses.NextTerm}

然后从这个结果中我选择获取列,以便我可以将格式应用于日期时间列

  Dim query = (From estty In sSession Select estty).ToList() _
              .Select(Function(essty) New With {.Session = essty.Session,
                                 .Term = essty.Term,
                                 .StartDate = essty.StartDate.ToString("ddd d MMM yyyy"),
                                 .EndDate = CDate(essty.EndDate).ToString("ddd d MMM yyyy"),
                                 .NextTerm = CDate(essty.NextTerm).ToString("ddd d MMM yyyy")})

问题来自最后两条语句,因为数据库中的这一列包含空值,我认为 CDate 方法会起作用,但事实证明我错了。(这是抛出错误的地方) .EndDate = CDate(essty.EndDate).ToString("ddd d MMM yyyy"), .NextTerm = CDate(essty.NextTerm).ToString("ddd d MMM yyyy")} )

第二个查询结果绑定到网格视图,如 grdShowSession.DataSource = query grdShowSession.DataBind() 显示的错误是 Nullable object must have a value。请我需要帮助。

4

1 回答 1

0

Yo 可以创建一个函数,该函数返回一个带有类似元素的字符串

Function returnElementString As String(element As Objec)
    If IsNothing(element) Then
       return "whatever"
    Else 
       return CDate(element).ToString("ddd d MMM yyyy")
    End If
End Function

在您的代码中,您将用作示例:

.EndDate = returnElementString(essty.EndDate)
于 2013-10-11T19:17:41.637 回答