ternario - operator c#
El tipo de expresión condicional no puede determinarse (1)
Estoy tratando de guardar el valor del conjunto de datos a la lista aquí está mi código
GetPostWRTPager_Class = ds.Tables[0]
.AsEnumerable()
.Select(r => new GetPostWRTPager() {
IsApproved = r["IsApproved"] == DBNull.Value
? DBNull.Value
: Convert.ToInt32(r["IsApproved"]),
ApprovedBy = r["ApprovedBy"],
ApprovedOn = Convert.ToDateTime(r["ApprovedOn"]), })
.ToList();
siempre me está dando el error definido a continuación
El tipo de expresión condicional no se puede determinar porque no hay una conversión implícita entre ''System.DBNull'' e ''int''
Qué esta mal en mi codigo
Sí, no hay conversión implícita entre DBNull e int . Pero puede usar el método de extensión de Field que admite tipos anulables (mejor que usar System.Object ):
IsApproved = r.Field<int?>("IsApproved"),
Si no puede cambiar esa propiedad para convertirla en int? tienes que convertir el int al object :
IsApproved = r.IsNull("IsApproved") ? DBNull.Value : (object)r.Field<int>("IsApproved"),
Si quieres un valor int y 0 en caso de que sea NULL :
IsApproved = r.Field<int?>("IsApproved").GetValueOrDefault(),
Si IsApproved realidad es una propiedad bool (lo que su nombre sugiere) y solo 1 significa true :
IsApproved = r.Field<int?>("IsApproved") == 1,