LINQ命令的Where子句和Join

时间:2018-05-03 18:28:44

标签: c# .net linq join where

之间是否有性能差异:

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();

如果是,哪个查询更合适?

1 个答案:

答案 0 :(得分:2)

一般规则是过滤器左侧,意味着首先进行过滤。使用像C#这样的编译语言,你真的应该只测试它。抛出一些时间戳,看看执行大型查询需要多长时间。

原因是编译器通常会为您优化代码。实际运行的代码不是您编写的代码,因此编写代码以提高可读性,让编译器进行优化,然后测试性能。如果表现不佳或需要改进,请调整。