2012-11-09 84 views
2

我組我的資料按小時是這樣的:linq按小時範圍?

group c by new { date = new DateTime(Date.Year, Date.Month, Date.Day, Date.Hour, 5, 0), name = c.Name } into g 

我想是這樣的:10.05 - 11.05當我調試的代碼,日期返回喜歡我的預期。但數據仍然在10.00 - 11.00之間分組。

我希望我能解釋一下。這樣做的邏輯是什麼?

謝謝。

回答

1
let offSetDate = Date.AddMinutes(-5) //shift back so that Year,Month,Day,Hour are all that matter. 
let groupKey = new { 
    date = new DateTime(offSetDate.Year, offSetDate.Month, offSetDate.Day, offSetDate.Hour, 5, 0), 
    name = c.Name 
} 
group c by groupKey into g 
1
var groups = dList.GroupBy(d => (d.Ticks - 5*TimeSpan.TicksPerMinute)/TimeSpan.TicksPerHour) 
       .Select(g => g.ToList()) 
       .ToList(); 
+0

它的工作原理,但我應該讓我的背日(10:05)。但它返回'ReadDate = {01.01.0001 00:00:00} System.DateTime'我期待的例子'ReadDate = {09.11.2012 10:05:45}' –

+0

@AliRızaAdıyahşi我不知道你是如何使用它,因爲你沒有顯示你的真實代碼。但是關鍵點在於使用'ticks'。其他部分只是linq技巧(不要使用組的'Key')。 –