在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/