簡體   English   中英

將sql查詢轉換為Entity Framework

[英]convert an sql query to Entity Framework

以下sql查詢正在運行並獲取當前月份的每日訪問量

select  date(date) as DayDate, count(*) As visitsaday from Visits group by DayDate having DayDate between date('now','start of month') and date('now','start of month','+1 month','-1 day')

幾天來,我試圖弄清楚如何使用實體框架來運行它。 到目前為止,我最好的方法是:

ObjectQuery<Visit> visits = fitent.VisitMenge;
                var uQuery =
                    from visit in visits
                    group visit by visit.Date into g
                    select new
                    {
                        DayOfMonth = g.Key,
                        VisitsPerDay = g.Count()
                    };

這里的問題是,它將按日期+時間而不僅僅按日期進行分組。 結果如下:

[0] = { DayOfMonth = {06.07.2009 12:38:59}, VisitsPerDay = 1 } 

但它應該看起來像

[0] = { DayOfMonth = {06.07.2009}, VisitsPerDay = 12 }
  • 如何更改用於分組的日期格式?
  • 如何在SQL查詢中過濾當前月份的幾天?

你能這樣做嗎:

ObjectQuery<Visit> visits = fitent.VisitMenge;
var uQuery = from visit in visits
             group visit by visit.Date.Day into g
             select new
             {
                 DayOfMonth = g.Key,
                 VisitsPerDay = g.Count()
             };

只需添加一個.Day到你的“visit.Date” - 這有用嗎?

你需要做兩件事:

  • 使用where限制日期的結果
  • 使DayOfMonth只是日期而不是完整的DateTime

-

var uQuery = from visit in visits
             where visit.Date.Month == DateTime.Now.Month 
                 && visit.Date.Year == DateTime.Now.Year
             group visit by visit.Date into g
             select new
             {
                 DayOfMonth = g.Key.Date,
                 VisitsPerDay = g.Count()
             };

我現在使用以下:

ObjectQuery<Visit> visits = fitent.VisitMenge;
                var uQuery =
                    from visit in visits
                    where visit.Date.Value.Month == DateTime.Now.Month
                 && visit.Date.Value.Year == DateTime.Now.Year
                    group visit by visit.Date.Value.Day into g
                    select new
                    {
                        DayOfMonth = g.Key,
                        VisitsPerDay = g.Count()
                    };

建議的解決方案一起工作正常!

我不得不改變一點點

而不是visit.Date.Day我不得不:

visit.Date.Value.Day

我現在的結果如下:

[0] = { DayOfMonth = 6, VisitsPerDay = 3 }

謝謝 !

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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