Vb.net 无法将类型为“System.Linq.IQueryable(of Date?)”的值转换为“Date”

Vb.net 无法将类型为“System.Linq.IQueryable(of Date?)”的值转换为“Date”,vb.net,linq,datetime,Vb.net,Linq,Datetime,我试图获取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 Selec

我试图获取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
g将是一个IQueryableDate?,它是一个集合,因此您首先必须检查是否有一个值。如果可以有多个结果或没有结果,则可以使用FirstOrDefault;如果不应该有多个结果,则可以使用SingleOrDefault

那你就有一次约会?返回然后可以使用HasValue属性检查日期是否为?有一个值,如果是真的,就返回它。如果不是,您应该从函数中返回另一个日期,可能是DateTime.MinValue

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

g将是IQueryableDate?,这是一个集合,因此您首先必须检查是否有值。如果可以有多个结果或没有结果,则可以使用FirstOrDefault;如果不应该有多个结果,则可以使用SingleOrDefault

那你就有一次约会?返回然后可以使用HasValue属性检查日期是否为?有一个值,如果是真的,就返回它。如果不是,您应该从函数中返回另一个日期,可能是DateTime.MinValue


或者您可以将函数的返回值更改为日期?另外,如果有可以使用的默认日期,您可以使用:return ifg,这显然是coallesce操作符在VB中的表现方式。如果g为null,则将返回任何值。此外,如果可以使用默认日期,则可以使用:Return ifg,这显然是coallesce操作符在VB中的表现形式。如果g为null,则返回任何值。