2013-08-22 57 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

相关问题