Linq枚举没有结果

时间:2016-07-26 07:52:44

标签: c# entity-framework linq

这个表达式是否正确构建?

 var avTimes = db.AvailableTimes.Where(m => m.TimeOfAppointment >= new DateTime(date.Year, date.Month, date.Day, 08, 00, 00)
                                              && m.TimeOfAppointment <= new DateTime(date.Year, date.Month, date.Day, 16, 00, 00)
                                              && m.StateOfBooking == 1
                                              && m.ProviderId == id);

它给出了“linq枚举没有结果”作为输出。

2 个答案:

答案 0 :(得分:1)

没有结果的枚举是运行时告诉您查询没有找到任何匹配的参数结果。有两种方法可以调试它:

1)启动SQL事件探查器并启动跟踪,检查生成的查询并使用查询分析器运行该查询以更好地理解您的查询。

2)将查询修剪回无参数,确保它产生结果,然后一次添加每个参数/细化,并观察行为如何更改以更好地理解它。

答案 1 :(得分:-1)

这个表达式是否构建正确?

我会将日期时间值的实例移出linq语句。将方法移动到linq语句中可能会导致异常,例如:这不能转换为sql语句

DateTime dtTimeOfAppointmentFrom = new DateTime(date.Year, date.Month, date.Day, 08, 00, 00);
DateTime dtTimeOfAppointmentTo = new DateTime(date.Year, date.Month, date.Day, 16, 00, 00);

var avTimes = db.AvailableTimes.Where(m => m.TimeOfAppointment >= dtTimeOfAppointmentFrom
                                    && m.TimeOfAppointment <= dtTimeOfAppointmentTo
                                    && m.StateOfBooking == 1
                                    && m.ProviderId == id);

linq枚举没有产生结果只是说找不到符合条件的行。因此,您可以通过在sql浏览器中键入语句并比较结果来验证结果。