我的LINQ查询返回了一些奇怪的结果。
LINQ查询(返回不正确的结果):
IEnumerable<PART_EVENTS> parts = db.PART_EVENTS
.Where(p => p.OP == op.NCM_DB_NAME && p.Timestamp > tempBegin && p.Timestamp <= tempEnd)
.OrderBy(p => p.PART_ID_NUM)
.ThenBy(p => p.Timestamp)
.ToList();
Visual Studio调试器中返回的结果显示每个唯一的部件ID的相同时间戳,但SQL Developer或查询窗口(在服务器资源管理器中)中的直接查询显示不同的时间戳(实际上,每行的时间戳应该是不同。)
SQL Query(返回正确的结果):
select *
from PART_EVENTS
where OP = 'OP20B'
AND "Timestamp" > to_date('11/28/2012 07:00 am', 'mm/dd/yyyy hh:mi am')
AND "Timestamp" <= to_date('11/28/2012 10:58 am', 'mm/dd/yyyy hh:mi am')
order by part_id_num, "Timestamp"
我已经尝试了很多东西来尝试纠正这个并且已经持续了2天,但我不知道我做错了什么或者是否由EF生成的SQL有问题。
任何建议都将不胜感激。谢谢。
答案 0 :(得分:1)
在发布我的问题之前,我决定再尝试一下:将“Timestamp”别名更改为PART_TIMESTAMP。显然LINQ不喜欢引用的别名。这解决了这个问题。