IQueryable<Order> OrderQuery = db.Orders;
if (date_conditions != null)
{
OrderQuery.Where(o => o.CreatedOn >= start_date);
OrderQuery.Where(o => o.CreatedOn <= end_date);
}
return OrderQuery.ToList();
当我检查生成的SQL查询时,虽然执行了if条件,但没有WHERE子句。 我做错了什么?
但是,当我编写代码时,
db.Orders.Where(...)
一次拍摄,它的作品
答案 0 :(得分:2)
您每次都必须将其分配给您的查询。 extensions方法每次返回一个新的IQuerable
,基本上是对Where
的两次调用创建一个新的IQueryable
丢弃它(因为它永远不会分配给变量)。
IQueryable<Order> OrderQuery = db.Orders;
var date_conditions = payload["date"];
if (date_conditions != null)
{
var dates = date_conditions as DateTime?[];
OrderQuery = OrderQuery.Where(o => o.CreatedOn >= dates[0]);
OrderQuery = OrderQuery.Where(o => o.CreatedOn <= dates[1]);
}
return OrderQuery.ToList();