2009-01-13 86 views
1

Linq DBML中有一個對象的新實例,但不知道測試日期字段是否爲空。Linq to SQL:詢問日期是否爲空

我曾嘗試:

If d Is Nothing OrElse IsDBNull(d) OrElse d <= Date.MinValue Then 
    TextValue = "nada" 
Else 
    TextValue = FormatDateTime(d) 
End If 

但結果是 「12:00:00 AM」

編輯:改變變量名d
編輯:請注意,SQL場爲空

編輯二:對不起傢伙,錯誤是在代碼的其他部分。相較於沒有什麼是解決

回答

3

你想要的代碼是(希望)..

If MyNullableDateObject.HasValue Then 
    TextValue = FormatDateTime(MyNullableDateObject.Value) 
Else 
    TextValue = "nada" 
End If 

如果SQL字段接受空值,則LINQ to SQL設計它映射到一個.net可空類型,實例SQL DateTime將被映射到名爲Date?的類型。如果您查看Linq to SQL設計器中字段的屬性,它應該有一個屬性「Nullable」,如果SQL模式允許該字段中的NULL值將被設置爲true。

非空(即普通)日期類型是值類型不是對象類型,所以「沒有」不會幫助。 IsDBNull適用於System.Data.SqlTypes類型的類型,但Linq to SQL映射到「native」.Net類型,因此也不起作用。

見 - Nulllable Types


編輯

你可能會考慮重新命名變量值到別的東西,因爲課程的(正如我在上面所做的),它不是一個值類型,值是壞名字。

還要注意,在VB空類型可以有兩種等效方法

Dim d As Date? 
Dim d As Nullable(Of Date) 

希望這是有道理的聲明。

+0

其實際value.value。 我也會考慮重命名'價值'; p – Shawn 2009-01-13 21:15:26

0

我不確定這是否可以正常工作,但您可能希望將其與Empty(或撥打IsEmpty)進行比較,因爲上午12:00不是空值。