之间是否有性能差异:
ctx
.Students
.Join(
ctx.Countries,
q => q.CountryId,
q => q.CountryId,
(c,s) => new { c,s })
.Where(q => q.c.CountryName= "USA")
.Select(q => q.s.StudentName)
.ToList();
和
ctx
.Students
.Join(
ctx.Countries.Where(q => q.CountryName == "USA"),
q => q.CountryId,
q => q.CountryId,
(c,s) => s)
.Select(q => q.StudentName)
.ToList();
如果是,哪个查询更合适?
答案 0 :(得分:2)
一般规则是过滤器左侧,意味着首先进行过滤。使用像C#这样的编译语言,你真的应该只测试它。抛出一些时间戳,看看执行大型查询需要多长时间。
原因是编译器通常会为您优化代码。实际运行的代码不是您编写的代码,因此编写代码以提高可读性,让编译器进行优化,然后测试性能。如果表现不佳或需要改进,请调整。