Performance 您应该使用什么来加入LINQ、查询语法或方法语法?

Performance 您应该使用什么来加入LINQ、查询语法或方法语法?,performance,linq,join,lambda,Performance,Linq,Join,Lambda,我想知道在性能方面,使用查询语法或方法语法Lambda表达式连接两个实体之间有什么区别 我已经知道,一般来说,查询语法和方法语法在结果方面没有区别。但是,对于加入,哪一个更好地使用性能智能? 以下是示例代码: var queryResult = (from p in People join i in Incomes on p.PersonId equals i.PersonId select

我想知道在性能方面,使用查询语法或方法语法Lambda表达式连接两个实体之间有什么区别

我已经知道,一般来说,查询语法和方法语法在结果方面没有区别。但是,对于加入,哪一个更好地使用性能智能? 以下是示例代码:

var queryResult = (from p in People
                       join i in Incomes
      on p.PersonId equals i.PersonId
                       select new { p.PersonId, p.Name, p.Age, i.Amount }
                      ).ToList();

        var lambdaResult = People.Join(Incomes,
                      p => p.PersonId,
                      i => i.PersonId,
                     (p, i) => new { p.PersonId, p.Name, p.Age, i.Amount }).ToList();
我已经浏览了这些网站,但没有提到加入


没有区别。在真正编译之前,您的第一个版本的查询语言将按词汇翻译成第二个one方法语法。查询语言只是语法糖,并转换为方法调用。如果可能的话,这些调用将被编译-翻译本身并不关心结果的正确性,例如,如果People.Join甚至是有效的C,那么在任何人身上都有这样的连接方法

这种转换使用显式的Select调用而不是Join方法的resultSelector参数,这可能有所不同,但即使这样,也不会对性能产生明显的影响

Jon Skeet帮助我理解了从查询语言到方法语法的转换

要回答这个问题,你应该使用什么:这真的取决于你。考虑:

您和您的同事更容易阅读/理解的内容! 复杂的查询通常在查询语法中更具可读性,类似SQL的样式比一长串方法调用更易于阅读 请注意,每个查询语法表达式都可以表示为方法调用,但并非所有方法调用都可以表示为查询语法 在一个查询中混合使用这两种语法通常比坚持使用其中一种更令人困惑