2011-10-26 56 views
2

是否可以創建linq查詢來查找日期範圍內的所有記錄?實體框架和日期時間比較

例如:

我有表VacationStart,VacationEnd - 既日期時間,我需要找到所有未決休假爲當前日期。

我想

context.Vacations..Where(x=> x.VacationStart >= DateTime.Now && x.VacationEnd < DateTime.Now) 

,但我越來越0記錄...

的樣本數據2011-10-27 08:30:00.000 2011-10-28 17:00:00.000

當前日期:2011-10-26 23:39:46.297

我在哪裏犯錯?

感謝

回答

1

你問了,現在後開始和結束前NOW,不可能休假。嘗試詢問並比較不同的開始時間和結束時間,以及開始時間小於結束時間的時間。

僅給出當前正在進行的休假。

var query = context.Vacations.Where(v => v.VacationEnd > DateTime.Now 
    && v.VacationStart < DateTime.Now); 

給出尚未開始的假期。

var query = context.Vacations.Where(v => v.VacationStart > DateTime.Now); 

給出正在進行中或尚未開始的假期。

var query = context.Vacations.Where(v => v.VacationEnd > DateTime.Now); 

最後一個不會過濾任何未來的假期。

+0

嗯,也許你是對的,我只需要一個更多的查詢問間隔最舊/最新的假期...... – Mennion

+1

好吧,如果你想要做的是找出有多少假期正在進行或沒有甚至開始,但你只需要在enddate上進行比較。 var query = context.Vacations.Where(v => v.VacationEnd> DateTime.Now);這將爲您提供目前正在進行的以及所有未來假期的任何假期,因爲假期結束日期應始終大於開始日期。 – benjamin

+0

是的,你是絕對正確的。對於我的例子,我只需要使用你的第一個soluion。我有點累,所以我問了一個愚蠢的問題。 感謝您的幫助。 – Mennion