Wie kann ich nur Datumskomponenten aus DateTime in EF vergleichen?

c# datetime-comparison entity-framework linq linq-to-entities

Frage

Ich habe zwei Datumswerte, von denen einer bereits in der Datenbank gespeichert ist und der andere vom Benutzer mit DatePicker ausgewählt wurde. Der Anwendungsfall besteht darin, nach einem bestimmten Datum in der Datenbank zu suchen.

Der zuvor in der Datenbank eingegebene Wert hat immer eine Zeitkomponente von 12:00:00, wobei das vom Kommissionierer eingegebene Datum eine andere Zeitkomponente hat.

Ich interessiere mich nur für die Datumskomponente und möchte die Zeitkomponente ignorieren.

Wie können Sie diesen Vergleich in C # durchführen?

Wie mache ich das auch in LINQ?

UPDATE: Bei LINQ to Entities funktioniert das Folgende gut.

e => DateTime.Compare(e.FirstDate.Value, SecondDate) >= 0

Akzeptierte Antwort

HINWEIS: Zum Zeitpunkt des Schreibens dieser Antwort war die EF-Beziehung unklar (die nach dem Schreiben in die Frage eingearbeitet wurde). Überprüfen Sie für eine korrekte Annäherung mit EF die Antwort von Mandeeps .


Sie können die DateTime.Date Eigenschaft verwenden, um einen Vergleich nur mit Datum durchzuführen.

DateTime a = GetFirstDate();
DateTime b = GetSecondDate();

if (a.Date.Equals(b.Date))
{
    // the dates are equal
}

Beliebte Antwort

Verwenden Sie die Klasse EntityFunctions um den EntityFunctions zu EntityFunctions .

using System.Data.Objects;    

var bla = (from log in context.Contacts
           where EntityFunctions.TruncateTime(log.ModifiedDate) ==  EntityFunctions.TruncateTime(today.Date)
           select log).FirstOrDefault();

Quelle: http://social.msdn.microsoft.com/Forums/de/csharpgeneral/thread/84d4e18b-7545-419b-9826-53ff1a0e2a62/

AKTUALISIEREN

Ab EF 6.0 und höher wird EntityFunctions durch DbFunctions ersetzt .



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum