如何只比較EF中DateTime的日期組件?

c# datetime-comparison entity-framework linq linq-to-entities

我有兩個日期值,一個已存儲在數據庫中,另一個由用戶使用DatePicker選擇。用例是從數據庫中搜索特定日期。

先前在數據庫中輸入的值始終具有12:00:00的時間分量,其中從選擇器輸入的日期具有不同的時間分量。

我只對日期組件感興趣,並且想要忽略時間組件。

在C#中進行這種比較的方法有哪些?

另外,如何在LINQ中執行此操作?

更新:在LINQ to Entities上,以下工作正常。

e => DateTime.Compare(e.FirstDate.Value, SecondDate) >= 0

一般承認的答案

注意:在撰寫此答案時,EF關係不清楚(在編寫完成後編輯成問題)。要獲得EF的正確方法,請檢查Mandeeps的答案


您可以使用DateTime.Date屬性執行僅日期比較。

DateTime a = GetFirstDate();
DateTime b = GetSecondDate();

if (a.Date.Equals(b.Date))
{
    // the dates are equal
}

熱門答案

使用EntityFunctions類修剪時間部分。

using System.Data.Objects;    

var bla = (from log in context.Contacts
           where EntityFunctions.TruncateTime(log.ModifiedDate) ==  EntityFunctions.TruncateTime(today.Date)
           select log).FirstOrDefault();

資料來源: http//social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/84d4e18b-7545-419b-9826-53ff1a0e2a62/

UPDATE

由於EF 6.0及更高版本EntityFunctions被替換DbFunctions



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因