类型'System.Linq.IQueryable(Of Date?)'的值无法转换为'Date'

时间:2011-12-06 06:38:21

标签: vb.net linq datetime

我正在尝试获取日期时间值,但这是可以为空的datetype问题。如何解决?

Public Function GetDate(ByVal kodg As Integer) As DateTime
    Dim g = From dt In db.xDates _
            Join f In db.xGrafiks On dt.КодД Equals f.DateKod _
            Where f.Kod = kodg
            Select New Date?(dt.Дата) ???
    Return g ???
End Function

1 个答案:

答案 0 :(得分:4)

g将是IQueryable(Date?),这是一个集合,因此您首先必须检查是否有值。您可以使用FirstOrDefault()(如果可能有多个结果或没有结果)或SingleOrDefault(如果不应该有多个结果)来执行此操作。

然后你得到一个Date?。然后,您可以使用HasValue属性检查Date?是否有值,如果是,则返回它。如果不是,您应该从函数中返回另一个Date(也许DateTime.MinValue?)。

或者您可以将函数的返回值更改为Date?,然后从查询中返回可为空的日期。