Search code examples
linq-to-entitiesdateadd

Is it possible to do DateAdd calculations in Linq to Entities?


I have the following sql and I'm not sure how to do a DateAdd and an IsNull in Linq to Entities. Is this even possible?

Select TOP 1 DateAdd(MINUTE, 
    (IsNull(AlarmMinutes, 0) * -1) + (IsNull(SnoozeMinutes, 0)), 
    DueDate) 
From Todo
Order By DateAdd(MINUTE, 
    (IsNull(AlarmMinutes, 0) * -1) + (IsNull(SnoozeMinutes, 0)), 
    DueDate) 

Solution

  • You can use EnitityFunctions.AddMinutes

    var date = (from x in context.Todo
                let AlarmMinutes = x.AlarmMinutes.HasValue ? x.AlarmMinutes.Value : 0
                let SnoozeMinutes= x.SnoozeMinutes.HasValue ? x.SnoozeMinutes.Value : 0
                let newDate = EntityFunctions.AddMinutes(x.DueDate, AlarmMinutes*-1 + SnoozeMinutes)
                ordeby newDate
                select newDate).FirstOrDefault();