2013-10-11 57 views
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 =查詢 grdShowSession.DataBind() 所示的誤差一個gridview是可空的對象必須有一個值。請我需要幫助。

回答

0

呦可以使返回字符串中包含

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)