DbFunctions.TruncateTime在ASP .NET CORE中等效LINQ

asp.net asp.net-core entity-framework-core linq sqlite

我的.net應用程序中有以下功能LINQ

    public ActionResult Index()
    {
        Dictionary<DateTime?, List<Event>> result;
        result = (from events in db.Events.Include("Activity")
                      where events.IsActive
                      group events by DbFunctions.TruncateTime(events.DateTimeFrom) into dateGroup
                      select new { EventDate = dateGroup.Key, Events = dateGroup.ToList() }).ToDictionary(x => x.EventDate, x => x.Events);

        return View(result);
    }

當我在ASP .NET CORE中使用它時,我不能使用DbFunctions。我如何重寫它以使其在Microsoft.EntityFrameworkCore中工作?我正在使用SQLite,如果這有所作為。

熱門答案

DbFunctions.TruncateTime中使用DbFunctions.TruncateTime而不是DateTime.Date屬性,因為由於某種原因,後者不受支持。

在EF Core中,不需要前者,因為現在可以正確識別和翻譯DateTime.Date

group events by events.DateTimeFrom.Date into dateGroup

遺憾的是,還沒有支持的文檔,所以作為一般的經驗法則,總是嘗試相應的CLR方法/屬性(如果有的話)並檢查它是否轉換為SQL以及如何。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow