在linq-to-sql中,我们期望哪个示例(如果有)评估效率更高/更快?它们是否编译为相同的sql?在这些示例之间进行选择时,我还应该考虑其他因素吗?

(使用DbContext context

context.Events
   .Where(evt => evt.Date <= endDate && evt.Date > startDate);


要么...

context.Events
   .Where(evt => evt.Date <= endDate)
   .Where(evt => evt.Date > startDate);

最佳答案

如上面的juharr所述,两者都生成完全相同的SQL查询。

出于好奇,我在自己的数据库上进行了时间测试,发现&&生成查询的速度相当快。

            for (int i = 0; i < 500; i++)
            {
                var wko = db.WorkOrders
                    .Where(evt => DateTime.Now > evt.LastModified)
                    .Where(evt => DateTime.Now > evt.Opened);
            }
            for (int i = 0; i < 500; i++)
            {
                var wko2 = db.WorkOrders
                    .Where(evt => DateTime.Now > evt.LastModified && DateTime.Now > evt.Opened);
            }


第一个循环在第二个循环在
我敢肯定,这通常对您的表现影响很小,但仅供参考。

关于c# - 一处进行两次相等性检查,反之亦然,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41744142/

10-13 06:39