C# 实体框架lambda表达式中的参数说明

C# 实体框架lambda表达式中的参数说明,c#,entity-framework,lambda,C#,Entity Framework,Lambda,假设您有一个名为RateCountry的模型,其中CountryCode是属性之一,那么下面的两个语句之间是否存在性能或可读性方面的差异。当然,在我的项目中,我只有一个返回语句 public RateCountry GetRateCountry(string countryCode, int rateId) { return _directConnectContext.RateCountries.FirstOrDefault(rc => rc.CountryCode == coun

假设您有一个名为RateCountry的模型,其中CountryCode是属性之一,那么下面的两个语句之间是否存在性能或可读性方面的差异。当然,在我的项目中,我只有一个返回语句

public RateCountry GetRateCountry(string countryCode, int rateId)
{
    return _directConnectContext.RateCountries.FirstOrDefault(rc => rc.CountryCode == countryCode && rc.RateID == rateId);

    return _directConnectContext.RateCountries.Where(rc => rc.CountryCode == countryCode && rc.RateID == rateId).FirstOrDefault(); 
}

LINQ语句的相等性由生成的SQL代码的相等性定义。如果查看这两个查询生成的SQL代码,就会发现它们是相同的。所以,回答你的问题-不,没有区别。

EF是ORM。LINQ查询最终生成SQL查询。比较生成的SQL文本。我怀疑它们要么相同,要么相等。只有一种方法可以编写
从X中选择TOP 1,其中…
只要您处理的是
IQueryable
,如果
\u directConnectContext
是EF DB上下文,则没有区别。@AshleyMedway错误的源代码。这是可枚举的,不是Queryable@AshleyMedway不过,Queryable的源并不重要,生成的SQL查询才重要。这是由提供者完成的。简单地检查生成的queriesFirst语句更容易,因为它只是第二个语句(简明版本)的快捷方式,因此性能应该是相同的。可读性如何,这是个人偏好的问题,因此是基于观点的。