1

我的 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 调试器中返回的结果为每个唯一的 Part ID 显示相同的时间戳,但在 SQL Developer 或查询窗口(在服务器资源管理器中)中的直接查询显示不同的时间戳(实际上,每一行的时间戳应该不同。)

SQL 查询(返回正确的结果):

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 是否有问题。

任何建议将不胜感激。谢谢你。

4

1 回答 1

1

就在发布我的问题之前,我决定再尝试一件事:将“时间戳”别名更改为 PART_TIMESTAMP。显然 LINQ 不喜欢引用的别名。这解决了问题。

于 2012-11-28T18:39:23.427 回答