[英]How to Get 6PM of previous day using Entity Framework
我遇到一個問題,我必須對當前時間大於記錄時間(前一天下午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天后從當前數據庫日期創建一個新日期,而新創建日期的時間是6pm。 但是我從實體框架得到了這個例外。
LINQ to Entities僅支持無參數的構造函數和初始化程序。
我的工作方式非常復雜,甚至無法正常工作,因此請幫我並提出一些簡單的方法。
如果我正確理解您的問題,這是您的要求:
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);
您當然不需要使用EntityFunctions進行簡單的日期比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.