2016-08-20 50 views
0

我有一個具有DueDate列的SQL Server數據庫表。此列的數據類型爲nvarchar(50),因此它將日期值作爲字符串保存到此列中。如何使用實體框架篩選字符串日期列上的記錄

我正在使用實體框架從此表中獲取記錄。我的要求是僅獲取DueDate已過期的記錄,即記錄DueDate < = TodaysDate。但是,因爲Linq to Entities不支持Covert.ToString()或Covert.ToDateTime()方法,所以我無法將DueDate值與今天的日期值進行比較。

請幫助我解決這個問題。

在此先感謝。

+1

更改保存日期爲日期的數據庫,你的生活將是簡單得多長遠來看。 – DavidG

回答

0

嘗試將字符串解析爲日期類型,如下所示: 我將當前日期存儲在一個字符串中(假設它就像從數據庫中讀取日期作爲字符串一樣),然後將其解析爲日期時間目的。

string StringDate = DateTime.Now.ToString(); 
DateTime Date = DateTime.Parse(StringDate); 
+0

感謝您答覆Ateeq。但是你的解決方案不起作用。當我嘗試您提到的解決方案時,我收到以下錯誤消息。 LINQ to Entities無法識別方法'System.DateTime Parse(System.String,System.IFormatProvider)'方法,並且此方法無法轉換爲商店表達式' –

+0

請將您的代碼發送出去我想檢查它 – Ateeq

0

試試這個。

DateTime startDate = DateTime.Now; 
string dateToCompare = startDate.ToString("dd/MM/yyyy"); 
var result = from Table in context.Table where Table.DueDate.CompareTo(dateToCompare) <= 0 
     select Table.ID; 
List<int> resultBrands = result.ToList(); // it should be select just Table but I will show the results to be clear. 

這裏是結果,(我用的測試數據庫)

enter image description here

希望幫助,

+0

感謝您的回覆Berkay。您提供的解決方案將僅返回DueDate爲今天的那些記錄。但是我也收到了DueDate比今天更少的記錄。你有解決方案嗎? –

+0

@MohitThakur它比今天返回更少。檢查第四個ID。在SQL記錄和DueDate。 – Berkay