今天追一個問題,追了半天,原本程式碼如下: MyContext context = new MyContext (); int count = context.Logs.Count(m => m.CreateDate.Value.ToShortDateString() == DateTime .Today.ToShortDateString()); 上面的式子在使用了 linq to Sql, 其中 Logs 資料表中有一個欄位 CreateDate 是 Sql 的 DateTime 型別,在 lamba Expression 中,把它當做 DateTime 型別使用,於是使用了 ToShortDateString 這個方法,編譯一切正常,但執行時,卻發生了例外。 不死心的,將上述的式子改為: MyContext context = new MyContext (); int count = context.Logs.Count(m => m.CreateDate.Value.ToString(" yyyyMMdd ") == DateTime .Today.ToString(" yyyyMMdd ")); 依然出錯,最後只好將式子改為 MyContext context = new MyContext (); int count = context.Logs.Count(m => m.CreateDate.Value.Date == DateTime .Today.Date); 才終於過關,但這一切過程都是 runTime 時才發生問題,原本強調 var 型別的動態性,與強型別編譯的好處,以減少錯誤的發生,但眼前卻顯得一切都不可靠。 最後終於在 msdn 中找到了答案: http://msdn.microsoft.com/en-us/library/bb425822.aspx 節錄最後面一段: System.DateTime Implemented Constructors: Copy Code DateTime(year, month, day) DateTime(year, month, day, hour, minutes, seconds) DateTime(year,...