2011-01-27 40 views
2

問題:Sql dateTime列包含具有時間限制的遺留數據。我有一個帶有日期選擇器的MVC表單,允許用戶選擇一個日期並從該日期的數據庫中取回所有記錄。Linq to Sql問題與長日期時間

問題然而,我認爲linq to sql對於數據模型來說是字面的,我不能將日期時間柱僅用於比較日期。繼承人的代碼片段

myDateSelected = 27/01/2011
p.PostedDate數據庫就等於像27/01/2001 17時09分00秒

var p from products 
where p.PostedDate == myDateSelected 
select p 

我怎麼能投p.PostedDate剝離時間元素關閉以允許比較工作?

Linq很新,至今無法找到解決方案。

回答

5

我假設p.PostedDate是一個DateTime對象。如果這是真的,這應該做到這一點。

var p from products 
where p.PostedDate.Date == myDateSelected 
select p 
+0

確保您可能希望將雙方都去掉日期,以防萬一:var p來自產品 其中p.PostedDate.Date == myDateSelectedDate select p – 2011-01-27 15:12:17

2

您可以撥打DateTime.Date截斷時間元素,LINQ到SQL將轉化與SQL爲您提供:

var p from products 
where p.PostedDate.Date == myDateSelected 
select p 

將得到翻譯成這樣的事情:

-- Region Parameters 
DECLARE @p0 DateTime = '2010-02-24 00:00:00.000' 
-- EndRegion 
SELECT [t0].[PostedDate] 
FROM [Products] AS [t0] 
WHERE CONVERT(DATE, [t0].[PostedDate]) = @p0