C# 一次检查两个相等性,反之亦然
在linq to sql中,我们希望哪个示例(如果有)的评估效率更高/更快?它们是否编译为相同的sql?在这些例子中选择什么样的因素我应该考虑? (使用C# 一次检查两个相等性,反之亦然,c#,.net,linq,linq-to-sql,C#,.net,Linq,Linq To Sql,在linq to sql中,我们希望哪个示例(如果有)的评估效率更高/更快?它们是否编译为相同的sql?在这些例子中选择什么样的因素我应该考虑? (使用DbContext上下文) context.Events 其中(evt=>evt.Date startDate); 或者 context.Events 其中(evt=>evt.Date evt.Date>startDate); 如上所述,两者都生成完全相同的SQL查询 出于好奇,我在自己的数据库上做了一次时间测试,发现&&生成查询的速度要快得多
DbContext上下文
)
context.Events
其中(evt=>evt.Date startDate);
或者
context.Events
其中(evt=>evt.Date evt.Date>startDate);
如上所述,两者都生成完全相同的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);
}
for(int i=0;i<500;i++)
{
var wko=db.WorkOrders
.Where(evt=>DateTime.Now>evt.LastModified)
.Where(evt=>DateTime.Now>evt.Opened);
}
对于(int i=0;i<500;i++)
{
var wko2=db.WorkOrders
.Where(evt=>DateTime.Now>evt.LastModified&&DateTime.Now>evt.Opened);
}
在重复问题链接中完成的第一个循环完美地回答了这一点,谢谢。最终,这两个循环都将转换为相同的SQL,因此没有真正的区别。有趣的是,有人再次打开了它,因此拒绝了重复,即使OP说的是相反的。所以这里有一些相关的(或重复的):或(误导性的)可能的
context.Events
.Where(evt => evt.Date <= endDate)
.Where(evt => evt.Date > startDate);
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);
}