Ich habe eine SQL-Server-CE 4-Datenbank mit einer Tabelle mit einer DateTime?
Spalte namens EndDate. Wenn ich einen Datensatz lösche, setze ich dieses Enddatum und wenn ich eine Liste von Datensätzen abrufen möchte, möchte ich alle gelöschten Datensätze filtern, indem ich einen Filter auf das Enddatum anwende.Was ist der einfachste Weg, um DateTime in Linq mit SQL Server CE zu vergleichen?
Ich wenden diesen Filter über LINQ mit Entity Framework.
Meine Linq-Abfrage sieht wie folgt aus:
protected IDbSet<TEntity> Entities;
...
Entities.AsNoTracking().AsQueryable()
.Where(entity => !entity.EndDate.HasValue || entity.EndDate.Value > DateTime.UtcNow);
Wenn ich diese Linq-Abfrage ich die folgende Fehlermeldung aus:
The function 'CurrentUtcDateTime' is not supported by SQL Server Compact.
zu diesem Fehler Searching sagt mir, dass (wenn ich es verstanden habe richtig) Ich kann DateTime.UtcNow nicht verwenden.
Meine Frage ist: Was ist der alternative Weg, um das Ziel zu erreichen, das ich versuche zu erreichen?
Gibt es eine andere Funktion, die ich über Linq verwenden kann? Oder sollte ich eine primitivere Lösung verwenden, bei der ich auch die Datetime in eine Epoche umwandele und diese vergleiche?
Haben Sie versucht 'var now = DateTime.UtcNow;' und dann '... entity.EndDate.Value> jetzt);'? – Igor
entity.EndDate.Value.ComparetTo (otherDate) lookup CompareTo – kblau
Danke Igor, das hat den Trick gemacht. Ich dachte, ich hätte das versucht, aber ich denke, ich habe es nicht getan. Ich frage mich immer noch, warum eine Var akzeptiert wird und eine Eigenschaft nicht? Irgendwelche Ideen? – Cornelis