我遇到了一个问题,我必须对我的数据库记录执行一些操作,当前时间大于记录的时间(前一天下午6点)
示例:数据库记录时间为Mar-02-2012 03:00 pm
当前时间是Mar-01-2012 6:01 pm
现在当前时间大于前一天的下午6点。我创建了linq查询,就像这样
var a = (from trip in trips
where EntityFunctions.DiffMinutes(DateTime.UtcNow,
EntityFunctions.AddDays(new DateTime(Convert.ToDateTime(EntityFunctions.AddDays(trip.bookTime, -1)).Year,
Convert.ToDateTime(EntityFunctions.AddDays(trip.bookTime, -1)).Month,
Convert.ToDateTime(EntityFunctions.AddDays(trip.bookTime, -1)).Day,
18,0,0),-1)) > 0
select trip).ToList();
这里我尝试做的是在当前时间之间使用EntityFunctions.DiffMinutes
在几分钟内获得差异,并从当前数据库日期减1天创建新日期,新创建日期的时间是下午6点。但我从实体框架中得到了这个例外。
LINQ to Entities中仅支持无参数构造函数和初始值设定项。
我的工作方式非常复杂甚至无法正常工作,所以请帮助我并提出一些简单的方法。
答案 0 :(得分:1)
如果我理解你的问题,这就是你所需要的:
void Main()
{
var today = DateTime.Now; // or UtcNow if you need to
var todayMidnight = today.Date;
var yesterdayMidnight = todayMidnight.AddDays(-1);
var yesterday6pm = yesterdayMidnight.AddHours(18);
var trips = new List<Trip>
{
new Trip{ bookTime = todayMidnight },
new Trip{ bookTime = yesterdayMidnight }
};
var a = trips.Where(t=>t.bookTime > yesterday6pm).ToList();
}
// Define other methods and classes here
class Trip{
public DateTime bookTime{get;set;}
}
您可以将日期代码简化为:
var yesterday6pm = DateTime.Now.Date.AddDays(-1).AddHours(18);
或
var yesterday6pm = DateTime.Now.Date.AddHours(-6);
您当然不需要使用EntityFunction进行简单的日期比较。