2010-06-16 50 views
3

我似乎無法找到任何好的參考資料。 SQL中有很多數據和日期。所以我想製作一個折線圖來顯示這些數據。如果我想顯示它在一段時間內,然後我需要按天分組..但是LOGDATE是完整日期..不是天..LINQ。按天分組。如何輕鬆做到這一點?

所以我有這下面,但LINQ不知道什麼DAYOFYEAR「屬性...

var q = from x in dc.ApplicationLogs 
       let dt = x.LogDate 
       group x by new { dayofyear = dt.Value.DayOfYear } into g 
       select new 
       { 
        iCount = g.Count(), 
        strDate = g.Key 
       }; 
+1

是否使用LINQ到SQL? – SLaks 2010-06-16 21:53:46

+0

linq2ent ..。像一些日期函數restrcited這就是爲什麼這是如此困難,我猜 – punkouter 2010-06-17 14:58:51

+0

我可以使用LogDate.Value.Day但不LogDate.Value.ShortDateTime() – punkouter 2010-06-17 14:59:19

回答

2

您可以使用DbFunctions.TruncateTime

與時間部分返回給定的清除之日起

var q = from x in dc.ApplicationLogs 
     let dt = DbFunctions.TruncateTime(x.LogDate) 
     group x by dt into g 
     select new 
     { 
      iCount = g.Count(), 
      strDate = g.Key 
     }; 
+0

乾杯。花了我一段時間在谷歌搜索這個 - >正是我需要的。 – pfeds 2015-08-27 05:29:37

0

你爲什麼要使用:

let dt = x.LogDate 
    group x by new { dayofyear = dt.Value.DayOfYear } into g 

,而不是隻:

group x by x.LogDate.Value.DayOfYear into g 

我對此不太確定,但是可以在你的group by子句中使用類似的匿名對象來搞亂L2S。

+0

dayofyear不受Line2Ent支持。 :( – punkouter 2010-06-17 14:47:15

+0

這工作..但只一個月:( 變種q內的數據從=中的x dc.ApplicationLogs 組通過新的{x.LogDate.Value.Day}入克X 選擇新 { 的DayDate = g.Key.Day, iCount = g.Count() }; – punkouter 2010-06-17 14:58:23

+0

如何將所有數據提取到'List '中,然後用普通的舊LINQ-to-Objects進行分組? – tzaman 2010-06-17 18:14:24

2

你想要.Date獲得DateTime的日期部分,而不是DayOfyear,除非你故意將每年的同一天放入組中。

0

在這裏你去

let d = new DateTime(n.time.Year, n.time.Month, n.time.Day) group n by d into grp select grp 
+0

在LINQ to Entities查詢中調用'new DateTime(...)'將失敗http://stackoverflow.com/questions/17367649/only-parameterless -constructors-和初始化,被支持的功能於LINQ -to-entiti – jocull 2016-04-06 19:13:55