Tengo una clase:
public class DriverShortInfoElement
{
......
public DateTime? VistracksDateAdded { get; set; }
}
Y quiero llenarlo con datos de DbContext. Quiero llenar VistracksDateAdded solo alguna condición es verdadera, de lo contrario dejar como nulo:
Lo intento así:
var list = (from i in _db.Drivers
select new DriverShortInfoElement()
{
.....
VistracksDateAdded = (i.ProblemSyncToVistracksDriver != null) ? i.ProblemSyncToVistracksDriver.DateAdded : null
}).ToList();
Pero error de compilación. ¿Cómo hacerlo así de simple?
3 respuestas
Supongo que DateAdded
es un DateTime
. Si utiliza el operador condicional, debe convertir null
a DateTime?
o utilizar new Nullable<DateTime>()
porque no hay una conversión implícita posible entre null
y DateTime
:
VistracksDateAdded = i.ProblemSyncToVistracksDriver != null
? i.ProblemSyncToVistracksDriver.DateAdded
: new Nullable<DateTime>()
Hay otro operador: Operador condicional nulo
VistracksDateAdded = i.ProblemSyncToVistracksDriver?.DateAdded
var query =
from driver in _db.Drivers
select new DriverShortInfoElement
{
VistracksDateAdded = driver.ProblemSyncToVistracksDriver != null
? driver.ProblemSyncToVistracksDriver.DateAdded
: default(DateTime?)
};
Preguntas relacionadas
Nuevas preguntas
c#
C # (pronunciado "see sharp") es un lenguaje de programación multi-paradigma de alto nivel, estáticamente tipado desarrollado por Microsoft. El código C # generalmente se dirige a la familia de herramientas y tiempos de ejecución .NET de Microsoft, que incluyen .NET Framework, .NET Core y Xamarin, entre otros. Use esta etiqueta para preguntas sobre el código escrito en las especificaciones formales de C # o C #.