Ho la query linq seguente che accetta un campo di testo che può essere Y, N o DBnull e popola un valore booleano? parametro con True, False o null in base al valore del campo.C# usando LINQ e Nullable Boolean
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 linea problematico è
(i.targetmet == "Y") ? true : ((i.targetmet == "N") ? false : null)
Dopo aver letto ho trovato alcuni documenti in cui si afferma che il 2 ° e 3 ° argomenti della linea, se necessità di essere dello stesso tipo o la conversione implicita una un altro.
La mia domanda è: come posso aggirare questa limitazione per ottenere il risultato desiderato?
Sono relativamente nuovo a C# quindi non ho ancora familiarità con tutte le sue peculiarità/capacità.
Questo ha funzionato alla grande Dynami. Ora sto riscontrando un problema più in là dove sto cercando di utilizzare il valore in un DisplayTemplate con il codice seguente: <% @ Control Language = "C#" Inherits = "System.Web.Mvc.ViewUserControl "%> <%: ((booleano?) Model.Value == True)? "kpi_tick.png": "kpi_cross.png"%> L'idea è che visualizzerà un'immagine di spunta per vero, immagine incrociata per falso, e nessuna immagine per indefinito (non hanno ancora fatto quel pezzo di codice) . Ricevo l'errore "Il nome 'True' non esiste nel contesto corrente" –
hermiod
Questo codice ha l'aspetto di ASP.NET, con cui ho lavorato molto ultimamente. Quindi, colpo casuale nel buio: sostituire True con vero? –
Creare una classe statica chiamata BoolHelper con un metodo statico bozza Parse (stringa s) che contiene la soluzione di Dynami. Quindi usalo per semplificare le cose per il tuo parser. –