请使用linq从数据库中提取一些数据到实体。从查询结果中我创建一个集合并绑定到gridview控件.Problem位于数据库的日期列之一,其中一些值为null,当我做了一个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”)})
第二个查询结果被绑定到gridview,就像这样 grdShowSession.DataSource = query grdShowSession.DataBind() 显示的错误是Nullable对象必须具有值。我需要帮助。
答案 0 :(得分: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)