В F # ожидалось, что выражение будет иметь тип ‘Nullable’, но здесь имеет тип ‘DateTime’

#f#

#f#

Вопрос:

У меня есть следующая функция в F #, которая возвращает данные из локальной базы данных:

 let GetScheduleAsync (tableDate : DateTime) =
        async {
            let! data = context.GetOfficeScheduleAsync(tableDate) |> Async.AwaitTask
            return data |> Seq.map(fun q -> {
                Visit.lastName = q.lastname
                firstName = q.firstname
                birthDate = q.birthdate 
                appointmentTime = q.appointment_time
                tservice = q.service_time
                postingTime = q.posting_time
                chartNumber = q.chart_number
                })                  
          }
          |> Async.StartAsTask
  

Где Visit определяется как:

 type Visit = {
    lastName : string
    firstName : string
    birthDate : Nullable<DateTime>
    appointmentTime : Nullable<DateTime>
    tservice : Nullable<DateTime>
    postingTime : Nullable<DateTime>
    chartNumber : Nullable<int>
    }
  

Теперь загруженный q.birthdate из базы данных не равен нулю, но в определении посещения он имеет значение null. Следовательно, возникает следующая ошибка:

 The expression was expected to have type
  'Nullable<DateTime>'
but here has type
   'DateTime'
  

Как мне сохранить определение Visit неизменным без изменения базы данных и исправить ошибку?

TIA

Ответ №1:

Вам нужно явно создать Nullable значение, подобное этому: Nullable q.birthdate .

Комментарии:

1. К вашему сведению, это становится неявным в F # 5