在 linq-to-sql 中,我们期望哪个示例(如果有)的评估效率更高/更快?他们编译成同一个sql吗?在这些示例之间进行选择时,还有其他我应该考虑的因素吗?
(使用 DbContext 上下文
)
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);
}
第一个循环在 <= 24 毫秒内完成 第二个循环在 <= 16ms 内完成
我确信这通常对您的表现影响很小,但仅供引用。
关于c# - 两个相等性检查在一个 Where 中,反之亦然以提高效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41744142/