2011-10-04 142 views
0

我在數據庫中有一個名爲「repeat」的DateTime字段。我只想記錄今天「重複」中的日期。按日期篩選(linq)

我想:

(...).Where(e => e.repeat.Value.Date.Day.Equals(DateTime.Now.Day)); 

或:

(...).Where(e => e.repeat.Value.Date.Day==DateTime.Now.Day); 

,但它不工作。

任何想法?

感謝總幹事卡米爾

+0

@Kamil:如果這些幫助你,請將它們標記爲已接受。 – TheGwa

回答

2

「它不工作」是非常模糊的,但是目前你'重新檢查星期幾而不是日期。我會建議使用:

Date today = DateTime.Today; 

var query = ....Where(e => e.repeat.Value.Date == today); 

編輯:現在還不清楚什麼這裏涉及的類型 - 如果repeat.Value本身並不是一個DateTime,你可能想:

var query = ....Where(e => e.repeat.Value.Date.Date == today); 
+0

如果'repeat.Value.Date'包含與午夜不同的時間? –

+0

@ArnaudF .:「與午夜不同的時間」是什麼意思?我假定'Value'是一個'DateTime',因此'Value.Date'是一天中的'DateTime'。 –

+0

@John:在DateTime中,當比較「2011/01/01 00:00:00 AM」到「2011/01/01 06:00:00 AM」時,結果將是錯誤的。或者我錯過了什麼?原來的帖子沒有什麼是說這不可能發生。 –

0

比較短日期,確保您的年/月/日的一次拍攝相同的:

(...).Where(e => e.repeat.Value.Date.ToShortDateString() == DateTime.Now.ToShortDateString()); 
1

試試這個:

(...).Where(e => (e.repeat >= DateTime.Today) && (e.repeat < DateTime.Today.AddDays(1))) 
+1

我喜歡這個,那就是e.repeat中的強大的重複元素。 –

+0

它是可靠的,這可能是決定性的。 –