这是我写的SQL查询:
select * from Addresses a
join ProviderAddresses pa on a.address_k = pa.address_k
where pa.provider_k = 'ABC123'
and pa.active = 1
and a.active = 1
and pa.addresstype_rtk = 'HOME'
这是我为它写的LINQ查询:
public IQueryable<Addresses> GetAddressesesForProvider(string provider_k, string addresstype_rtk)
{
var query = from a in this.Context.Addresses
join pa in this.Context.ProviderAddresses on a.Address_K equals pa.Address_K
where pa.AddressType_RTK == addresstype_rtk
&& pa.Active == true
&& a.Active == true
select a;
return query;
}
但这是错误的。 LINQ一个返回数千个记录,SQL一个只返回一个记录。
它是IQueryable
,因为稍后我需要通过for-each循环来完成其结果。
在SQL中,我传递硬编码值进行测试,但在我的代码中,LINQ方法我也传递了相同的硬编码值,因此不是问题。
答案 0 :(得分:1)
您可能错过了将provider_k
条件添加到where
;
public IQueryable<Addresses> GetAddressesesForProvider(string provider_k, string addresstype_rtk)
{
var query = from a in this.Context.Addresses
join pa in this.Context.ProviderAddresses on a.Address_K equals pa.Address_K
where pa.Provider_K == provider_k &&
pa.AddressType_RTK == addresstype_rtk &&
pa.Active == true &&
a.Active == true
select a;
return query;
}