我們經常會使用到日期時間的比較,但自己卻在 LINQ to Entities 的查詢中直接使用 DateTime.CompareTo(DateTime) 的方法遇到了一個問題……。
在使用 LINQ to Entities 的查詢中使用 DateTime.Date 來進行比較會出現「LINQ to Entities 中不支援所指定的型別成員 'Date'。僅支援初始設定式、實體成員和實體導覽屬性。」的錯誤訊息。範例程式碼如下所示:
collection.Where(x => x.EndDateTime.CompareTo(condition.StartDateTime) >= 0);
後來參考了幾篇網路上的文章,也獲得各種解決方法,最後發現一個方便的解法,使用 DbFunctions.TruncateTime(Nullable
collection.Where(x => DbFunctions.TruncateTime(x.EndDateTime).Value.CompareTo(condition.StartDateTime) >= 0);
參考資料:
本著作由Zhi-Wei製作,以創用CC 姓名標示-非商業性-相同方式分享 4.0 國際 授權條款釋出。