C# Linq到SQL检索单个记录的最快方法

C# Linq到SQL检索单个记录的最快方法,c#,.net,linq-to-sql,C#,.net,Linq To Sql,以下两个查询之间是否存在性能差异 CustomerProduct customerProduct = db.CustomerProducts.SingleOrDefault(p => object.Equals(p.Customer, this)); CustomerProduct customerProduct = (from p in db.CustomerProducts where object.Equals(p.Customer, this) select p).SingleO

以下两个查询之间是否存在性能差异

CustomerProduct customerProduct = db.CustomerProducts.SingleOrDefault(p => object.Equals(p.Customer, this));

CustomerProduct customerProduct = (from p in db.CustomerProducts where object.Equals(p.Customer, this) select p).SingleOrDefault();

也许还有另一个,甚至更快的

在编译方面,它们应该编译成相同的代码;Linq只是编译器将为您解释的语法糖。也就是说,并不是所有linq查询都会按照您期望的方式编译,不管怎样,您都应该始终使用
ObjectQuery
cast+
ToTraceString
方法检查生成的sql。

您是否尝试过比较实际的sql查询?或者如果您使用的是SqlServer,您可以使用Sql事件探查器检查正在发送的查询。这是否意味着比较表a中某一行的属性与检索表B中的行与对这些具有给定属性的表进行联接相同?我有一些类似的东西需要在不久的将来实现,我想“哦,我必须为这个查询编写SQL,因为在两个表上循环将是低效的。”@evanmcdonnal嗯……我不确定我是否理解你的意思。让我试着这样回答:如果您正在进行一个实际的sql查询,并且它涉及一个连接,那么您可以(在大多数情况下)将其转换为包含该(inner/outer)连接的linq查询。这样你就不必在内存中进行比较了。