以下各项之间是否存在性能差异:
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();
如果是,哪种查询更可取?
一般规则是先过滤,也就是说先过滤。不过,对于像C这样的编译语言,您真的应该对其进行测试。抛出一些时间戳,看看执行大型查询需要多长时间。
原因是编译器经常会为您优化代码。实际运行的代码不是您编写的代码,因此请编写可读性代码,让编译器进行优化,然后测试性能。如果绩效不佳或需要改进,则进行调整。