Die Verwendung Ternärer Operator innerhalb von Lambda-Ausdruck
Hier ist mein code:
var now = DateTime.Now;
var firstOfMonth = new DateTime(now.Year, now.Month, 1, 0, 0, 1);
var objectsAfterFirstOfThisMonth= _context.DataObjects
.Where(x => x.dateClosed == null ? x.dateClosed : x.dateCreated > firstOfMonth);
Bekomme ich die folgende Kompilierungsfehler:
Es gibt keine implizite Konvertierung zwischen " System.Nullable' und 'bool'
Ich verstehe nicht, die lambda-syntax genug, um zu verstehen, dieser Fehler.
Wenn ich nicht in der Lage bin diese zu verwenden, ternären syntax, dann werde ich die erforderlich sind, um die vollständige Liste der DataObjects aus der Datenbank, dann Durchlaufen Sie diese Liste, erstellen Sie die gefilterte Liste (die Objekte mit Daten, die später als der erste des aktuellen Monats), wie ich gehen.
Mein Ziel, in einem Punkt ist dieser: ich will alle Objekte, die aufgetreten nach dem ersten dieses Monats. dateCreated Feld niemals null. dateClosed ist manchmal null. dateClosed genauer ist und ich vergleichen möchten an diesem Tag so viel wie möglich, aber Sie müssen zurückgreifen auf dateCreated im Falle dateClosed null ist.
Bitte lassen Sie mich wissen, wenn ich Bedarf an mehr Informationen.
Vielen Dank im Voraus!
- Der compiler ist eindeutig dir zu sagen, was falsch ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während ich glaube @TyCobb gepostet den richtigen Grund, warum Sie ein Problem hat, ich bin nicht sicher, dass seine Antwort wird Ihnen die Abfrage, die Sie suchen. Es scheint, Sie wollen Holen Sie sich ein Datum, und vergleichen Sie es
firstOfMonth
?Wenn das so ist, ich denke, möchten Sie vielleicht so etwas wie dieses:
Das Prädikat muss evaulate zu einem
bool
. Ihrex.dateCreated
ist einDateTime?
(Annahme). Sie haben etwas in der wahr-Teil, wertet auf einetrue/false
.Etwas wie das folgende bekommen sollte, um zu kompilieren, aber nur als Beispiel. Ich bin nicht sicher, was Ihre eigentliche Logik sein soll, da du sagst
dateCreated
ist nie null, aber prüfen Sie den Wert null. Nur beachten Sie, dass diese alle auszuwerten, um eine true/false-Wert.