Ich habe die unten linq Abfrage, die ein Textfeld, das Y, N oder DBnull sein kann und ein boolean füllt? Parameter mit entweder True, False oder Null, abhängig vom Wert des Feldes.C# mit LINQ und 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
Die problematische Zeile ist
(i.targetmet == "Y") ? true : ((i.targetmet == "N") ? false : null)
Nach der Lektüre bis ich eine Dokumentation, die, wenn notwendig die 2. und 3. Argumente der Inline-Staaten gefunden vom gleichen Typ sein oder zu einer implizit konvertierbar sein Ein weiterer.
Meine Frage ist, wie komme ich um diese Einschränkung herum, um mein gewünschtes Ergebnis zu erreichen?
Ich bin relativ neu in C#, bin also noch nicht mit all seinen Macken/Fähigkeiten vertraut.
Das hat super funktioniert Dynami. Ich bekomme jetzt ein Problem weiter unten, wo ich versuche, den Wert in einem DisplayTemplate mit dem folgenden Code zu verwenden: <% @ Control Language = "C#" Inherits = "System.Web.Mvc.ViewUserControl "%> <%: ((Boolean?) Model.Value == True)? "kpi_tick.png": "kpi_cross.png"%> Die Idee ist, dass es ein Häkchenbild für echt, Kreuzbild für falsch und kein Bild für undefiniert anzeigt (habe dieses Bit des Codes noch nicht gemacht) . Ich bekomme den Fehler "Der Name 'True' existiert nicht im aktuellen Kontext" –
hermiod
Dieses Markup sieht aus wie ASP.NET, mit dem ich in letzter Zeit viel gearbeitet habe. So zufällig im Dunkeln geschossen: Ersetze Wahres mit Wahrem? –
Erstellen Sie eine statische Klasse namens BoolHelper mit einer statischen Methode bool Parse (Zeichenfolge s), die Dynamis Lösung enthält. Dann benutze das, um die Dinge für deinen Parser zu vereinfachen. –