Tengo la siguiente consulta linq que toma un campo de texto que puede ser Y, N o DBnull y rellena un booleano? parámetro con True, False o null dependiendo del valor del campo.C# usando LINQ y Boolean Nullable
var dset = from i in tbdc.Talkbacks
where i.talkback_id == id
select new Talkback(
i.talkback_id, i.acad_period, i.reference,
i.staff_member, i.date_received, i.no_talkers,
i.gender_id, i.names, i.type_id,
i.method_id, i.area_id, i.site_id,
i.category_id, i.date_closed, i.expenddate,
i.acknowledgementtarget,
(i.targetmet == "Y") ? true :
((i.targetmet == "N") ? false : null),
(i.acknowledgementtargetmet != "N") ? true : false
La línea problemático es
(i.targetmet == "Y") ? true : ((i.targetmet == "N") ? false : null)
Después de leer hasta que encontré algún tipo de documentación que establece que las 2ª y 3ª argumentos de la línea Cuando la necesidad de ser del mismo tipo o sean convertir implícitamente a uno otro.
Mi pregunta es, ¿cómo puedo evitar esta limitación para lograr el resultado deseado?
Soy relativamente nuevo en C#, así que todavía no estoy familiarizado con todas sus peculiaridades y capacidades.
Eso funcionó muy bien Dynami. Ahora estoy obteniendo un problema más adelante en la línea en la que trato de usar el valor en un DisplayTemplate con el siguiente código: <% @ Control Language = "C#" Inherits = "System.Web.Mvc.ViewUserControl "%> <%: ((Boolean?) Model.Value == True)? "kpi_tick.png": "kpi_cross.png"%> La idea es que muestre una imagen de marca para la imagen verdadera, cruzada para la imagen falsa y no para indefinida (todavía no se haya hecho ese fragmento del código) . Me aparece el error "El nombre 'Verdadero' no existe en el contexto actual" –
hermiod
Este marcado se parece a ASP.NET, con el que he trabajado mucho últimamente. Así que tiro al azar en la oscuridad: ¿reemplazar True por verdadero? –
Crea una clase estática llamada BoolHelper con un método estático bool Parse (cadena s) que contiene la solución de Dynami. Luego, usa eso para simplificar las cosas para tu analizador. –