C# 一次检查两个相等性,反之亦然

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查询 出于好奇,我在自己的数据库上做了一次时间测试,发现&&生成查询的速度要快得多

在linq to sql中,我们希望哪个示例(如果有)的评估效率更高/更快?它们是否编译为相同的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);
            }