我有一个项目的问题。我正在尝试获取位于特定国家或城市的公司列表。
表结构:
公司
CompanyID
CompanyName
etc…
CompanyAddressDetails(关系表)
Company_CompanyID
CorrespondingAddress_AddressID
对应地址:
AddressID
StreetName
RegionID
etc…
地区
RegionID
RegionName
RegionRegionTypeID
RegionDetails(关系表)
RegionParent
RegionChild
因此,要在示例 Stockholm 中找到一个地址(在 Region 表中的 ID 为 1198),我会这样做:
var addresses = from c in db.CorrespondingAddress select c;
addresses = addresses.Where(s => s.RegionID.Equals(1198));
要在斯德哥尔摩找到一家公司,我会这样做:
companyModel = from c in db.Company select c;
companyModel = companyModel.Where(s => s.CorrespondingAddress.Any(x => x.RegionID.Equals(1198)));
但现在我想考虑 RegionDetails 表(它有一个父和子,例如:1(瑞典)是父,1198(斯德哥尔摩)是子等)
如何找到位于瑞典但地址行中 ID 为 1198(斯德哥尔摩)的公司?
在普通的 SQL 中,我可能会做类似的事情:
SELECT CompanyName FROM Company
LEFT JOIN CompanyAddressDetails ON (Company.CompanyID = CompanyAddressDetails.Company_CompanyID)
LEFT JOIN CorrespondingAddress ON (CompanyAddressDetails.CorrespondingAddress_AddressID = CorrespondingAddress.AddressID)
LEFT JOIN Region ON (CorrespondingAddress.RegionID = Region.RegionID)
WHERE CorrespondingAddress IN (SELECT RegionChild FROM RegionDetails WHERE RegionParent = 1)