在两个日期之间搜索不起作用

时间:2013-11-07 18:21:32

标签: c# sql linq entity-framework

我有以下代码:

var q = context.Fuels.AsQueryable();
if (dateEdit1.EditValue != null && dateEdit2.EditValue != null)
{
   q.Where(d => d.FuelDate >= dateEdit1.DateTime && d.FuelDate <= dateEdit2.DateTime);
}

并且它正常工作,它将获取表格中的所有行。

但是当我使用这段代码时:

if (dateEdit1.EditValue != null && dateEdit2.EditValue != null)
{
     var r = context.ExecuteStoreQuery<Fuel>(String.Format("SELECT * FROM Fuel WHERE FuelDate BETWEEN '{0}' AND '{1}'", 
                 dateEdit1.DateTime.Year + "-" + dateEdit1.DateTime.Month + "-" + dateEdit1.DateTime.Day, 
                 dateEdit2.DateTime.Year + "-" + dateEdit2.DateTime.Month + "-" + dateEdit2.DateTime.Day));
}

它正在运作,但我需要使用第一种方式来实现关系。

知道第一个问题是什么?

1 个答案:

答案 0 :(得分:3)

在你的if子句中,你需要将它分配给q,如果不这样做,q只是对所有Fuels的查询

这应该有效:

q = q.Where(d => d.FuelDate >= dateEdit1.DateTime && d.FuelDate <= dateEdit2.DateTime);