Search code examples
c#linqentity-frameworklinq-to-entitiesdatetime-comparison

How to compare only date components from DateTime in EF?


I am having two date values, one already stored in the database and the other selected by the user using DatePicker. The use case is to search for a particular date from the database.

The value previously entered in the database always has time component of 12:00:00, where as the date entered from picker has different time component.

I am interested in only the date components and would like to ignore the time component.

What are the ways to do this comparison in C#?

Also, how to do this in LINQ?

UPDATE: On LINQ to Entities, the following works fine.

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

Solution

  • NOTE: at the time of writing this answer, the EF-relation was unclear (that was edited into the question after this was written). For correct approach with EF, check Mandeeps answer.


    You can use the DateTime.Date property to perform a date-only comparison.

    DateTime a = GetFirstDate();
    DateTime b = GetSecondDate();
    
    if (a.Date.Equals(b.Date))
    {
        // the dates are equal
    }