2014-03-05 27 views
3

我需要根據一年中使用Linq to Entities連接到MySQL數據庫的週數來執行分組。我目前的查詢看起來像。Linq To實體DayOfYear MySQL的替代方案

 
entities.GroupBy(t => t.StartTime.Year + "/" + 
    (int)Math.Floor((double)(t.StartTime.DayOfYear - 1)/7.0)) 

但是,這不起作用,因爲實體框架無法正確映射DayOfYear。有沒有什麼 我可以做到這一點,仍然使用Linq實體。

我正在使用實體框架5.0。

回答

0

原來我不能。不容易。

所以我寫了一個存儲過程,完成繁重的工作,並使用了DAYOYEAR函數中的MySQL。

2

使用SqlFunctions.DatePart靜態方法嘗試:

entities.GroupBy(t => t.StartTime.Year + "/" + 
    (int)Math.Floor((double)(SqlFunctions.DatePart("dy", t.StartTime.DayOfYear))/7.0)) 

但我不知道它會與MySQL數據庫。

+0

[SqlFunctions](http://msdn.microsoft.com/en-us/library/system.data.objects.sqlclient.sqlfunctions(v = vs.110).aspx)經常被忽略或不知道。它是一套很棒的工具。 – Nate

+1

可悲的是我不能使用SqlFunctions,因爲我通過My​​SQL連接器使用MySQL數據庫。 – fungus1487