2013-08-22 85 views
1

這段代碼是爲了按截止日期進行高級搜索而編寫的。使用實體框架將變量與列表中的其他兩個變量進行比較變量

var temp = (from j in db.Get_AllCases(user_id, true, -1) select j).ToList(); 
temp = (from c in temp 
      where (
      (String.IsNullOrEmpty(deadline) || c.Deadline <= System.Convert.ToDateTime(deadline))      
      ) 
      select c).ToList(); 

有些情況下延長期限,這是我的問題,因爲案件的這種情況下,到底是不是最後期限超過extend_deadline。在上面的代碼這種情況下,行

(String.IsNullOrEmpty(deadline) || c.Deadline <= System.Convert.ToDateTime(deadline)) 

有看起來像這樣

(String.IsNullOrEmpty(extend_deadline) || c.Deadline <= System.Convert.ToDateTime(deadline)) 

如何修改語句臨時變量,其中可能包括該異常。 Deadline和extend_deadline是數據庫表中的兩列,對於搜索來說,對於選擇的日期與截止日期和extend_deadline中較早的日期進行比較是非常重要的。

回答

2

如何:

temp = (from c in temp 
     let maxDate = (string.IsNullOrEmpty(c.ExtendedDealine)) ? c.Deadline : c.ExtendedDealine 
     where (string.IsNullOrEmpty(maxDate) || Convert.ToDateTime(maxDate) <= System.Convert.ToDateTime(deadline)) 
     select c).ToList(); 

在一個側面說明,你應該使用DateTime,而不是所有的時間轉換字符串。

+0

我將ExtendedDeadline設置爲15.03.2013並將截止日期設置爲13.03.2013時測試您的代碼,但在這種情況下,maxDate是13.03.2013,但我希望15.03.2013 – Ognjen

+0

那麼,那不是那裏的條件說:'If ExtendedDeadline是空的,使用Deadline,否則使用ExtendedDeadline'。另外,我只是用模擬數據運行這段代碼。它工作正常。你確定你已經正確設置了變量嗎? – Artless

+0

這段代碼適合我:'let maxDate = c.ExtendedDeadline> c.Deadline? c.ExtendedDeadline:c.Deadline',你的想法很好,非常感謝 – Ognjen

相關問題