簡體   English   中英

如何使用實體框架獲取前一天的6PM

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM