unario ternario solo operator operadores operador logicos entonces ejemplos condicionales c# int

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,