2014-01-08 32 views
1

我有以下的SQL,我不知道如何在Linq to Entities中做一个DateAdd和IsNull。这甚至有可能吗?是否有可能在Linq to Entities中进行DateAdd计算?

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) 

回答

1

您可以使用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(); 
+1

几乎完美地工作。我不得不修改这一行EntityFunctions.AddMinutes(x.DueDate,AlarmMinutes * -1 + SnoozeMinutes)EntityFunctions.AddMinutes(x.DueDate,(AlarmMinutes ?? 0)* - 1 +(SnoozeMinutes ?? 0)) – Scottie

+0

EntityFuntions is现在称为DbFunctions – andersh