¿Cómo convertir DateTime? a DateTime

Quiero convertir DateTime ( DateTime? ) DateTime a DateTime , pero aparece un error:

No se puede convertir implícitamente el tipo ‘System.DateTime?’ a ‘System.DateTime’. Existe una conversión explícita (¿falta un elenco?)

He intentado lo siguiente:

 DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null ? DateTime.Now : _objHotelPackageOrder.UpdatedDate; 

Desea utilizar el operador de unión nula , que está diseñado para este propósito exacto.

Usándolo terminas con este código.

 DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now; 

MS ya creó un método para esto, por lo que no tiene que usar el operador de unión nula. No hay diferencia en la funcionalidad, pero es más fácil para los no expertos obtener lo que está sucediendo de un vistazo.

 DateTime updatedTime = _objHotelPackageOrder.UpdatedDate.GetValueOrDefault(DateTime.Now); 

Prueba esto

 DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now; 

Debe llamar a la propiedad Value del DateTime anulable. Esto devolverá un DateTime.

¿Asumiendo que la fecha UpdatedDate es DateTime? , entonces esto debería funcionar:

 DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null ? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value; 

Para hacer que el código sea un poco más fácil de leer, puede usar la propiedad HasValue en lugar de la comprobación null :

 DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue ? _objHotelPackageOrder.UpdatedDate.Value : DateTime.Now; 

Esto se puede hacer aún más conciso:

 DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now; 

Puedes usar un molde simple:

 DateTime dtValue = (DateTime) dtNullAbleSource; 

Como dijo Leandro Tupone, debes verificar si la var es nula antes

¿Qué hay de lo siguiente:

 DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue ? _objHotelPackageOrder.UpdatedDate.value : DateTime.Now; 

Aquí hay un fragmento de código que utilicé dentro de un Presentador para rellenar una vista con una Fecha / Hora con nulos.

 memDateLogin = m.memDateLogin ?? DateTime.MinValue 

También puede probar Nullable (T) Propiedades :

 DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue ? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value; 

más bien el usuario siguiente es mucho mejor

 DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate == null ? DateTime.Now : (DateTime)_objHotelPackageOrder.UpdatedDate; 

Prueba esto:

 DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null ? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value; 
 DateTime UpdatedTime = _objHotelPackageOrder.HasValue ? _objHotelPackageOrder.UpdatedDate.Value : DateTime.Now;