条款Where(i => i.TimeSt >= date1 && i.TimeSt =< date2)
未转换为where TimeSt between @date1 and @date2
。如何告诉EF使用它?
EDIT1
这是查询的简化版本。原来的一个处理超过17个日期。
EDIT2
date1
和date2
是具有重要日期部分和时间部分的标准.Net DateTime对象(例如:2017-01-05 21:15:21.123)
答案 0 :(得分:1)
简单的答案是你不能开箱即用。 EF7中有一些神奇的东西可以让你把这部分查询交给泰勒(但是正如其他人所说的那样看起来有些过分),请查看他们的测试以获得一个例子
from o in context.Set<Order>().FromSql(@"SELECT * FROM ""Orders"" WHERE ""OrderDate"" BETWEEN {0} AND {1}", startDate, endDate)
where c.CustomerID == o.CustomerID
....
也许更好的解决方案是在扩展方法之间编写自己的方法,该方法自动交换args的顺序,或者只是在查询之前执行
或者如果您希望它自动交换它们,请将两个订单放在查询(i => (i.TimeSt >= date1 && i.TimeSt =< date2) || (i.TimeSt >= date2 && i.TimeSt =< date1))