2012-04-03 49 views
8

使用日期時間?.Value.TimeOfDay我試圖做LINQ查詢在ASP.NET MVC 3在LINQ查詢

我有一個模型,讓我們把它叫做事件。此Event對象具有DateTime?的Date屬性。我想要的是獲取2個TimeSpans之間的事件。

現在我的代碼如下所示:

TimeSpan From = new TimeSpan(8,0,0); 
TimeSpan Until = new TimeSpan(22,0,0); 

var events = 
    from e in db.Events 
    where e.Date.Value.TimeOfDay >= From, 
      e.Date.Value.TimeOfDay <= Until 
    select e; 

拋出一個異常,告訴我,「指定的類型成員‘的TimeOfDay’在LINQ是不支持的實體。」

我沒有辦法解決這個問題,而且我一整天都在努力。請幫助我,我很沮喪。 :(

編輯:。

我忘了反正在這裏寫出了「的TimeOfDay」後e.Date.Value,我在我的代碼做

我不能使用日期時間,因爲我有一天的某些時間之間發生的事件進行過濾,儘管事件的日期。

+1

你的示例代碼甚至不使用'TimeOfDay' - 我假設它在現實中,而不是使用'Date'(按照你的代碼)? – 2012-04-03 20:02:01

+1

爲什麼使用兩個TimeSpan對象而不是兩個DateTime對象來過濾事件? – Steven 2012-04-03 20:02:38

回答

13

使用Date and Time Canonical Functions for LINQ-to-Entities。具體來說,看

CreateTime(hour, minute, second) 

如果您需要幫忙調用一個規範函數,看看How To: Call Canonical Functions

+0

這似乎是在軌道上,我不知道有關Cannonical函數。謝謝!但是,如何使用這些將DateTime轉換爲Time? – Umagon 2012-04-03 20:20:52

+0

@Umagon:使用'datetime.Hour','datetime.Minute'和'datetime.Second'。 – jason 2012-04-03 20:23:38

+1

天啊!這解決了我的問題!我想我愛你,哈哈。非常感謝你! :D – Umagon 2012-04-03 20:28:47