Search code examples
linqentity-frameworkdatetimeentity-framework-4

Use Linq query to compare date only with DateTime field


I need to compare just the date only in a Linq query that involves a datetime field. However, the syntax below results in the following error message

The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

Does anyone know how to extract just the date out of a datetime field?

var duplicate = from a in _db.AgentProductTraining
                where a.CourseCode == course.CourseCode &&
                a.DateTaken.Date == course.DateTaken.Date &&
                a.SymNumber == symNumber
                select a;

Solution

  • It might seem a little roundabout, but you can use the SqlFunctions class' DateDiff method for doing this. Just pass in both values and use "Day" for finding the difference between them in days (which should be 0 if they are on the same day).

    Like the following:

    from a in _db.AgentProductTraining
                    where a.CourseCode == course.CourseCode &&
                    SqlFunctions.DateDiff("DAY", a.DateTaken, course.DateTaken) == 0 &&
                    a.SymNumber == symNumber
                    select a;