-1
我要查询数据库,这样做需要我做了不少内部连接和一对夫妇的左外连接。我在视图中生成了SQL,但我现在在我的应用程序数据层中将它重写到LINQ时有点困难。重塑这种SQL到LINQ(C#,NET 4.5)
FROM dbo.Organisation
INNER JOIN
dbo.EducationCourseVenue
INNER JOIN
dbo.EducationCourseVenueLocation ON dbo.EducationCourseVenue.Id = dbo.EducationCourseVenueLocation.EducationCourseVenueId ON
dbo.Organisation.GlobalEntityGUID = dbo.EducationCourseVenue.GlobalEntityGUID
INNER JOIN
dbo.CommunicationType
INNER JOIN
dbo.CommunicationTypeGlobalEntityMap ON dbo.CommunicationType.Id = dbo.CommunicationTypeGlobalEntityMap.CommunicationTypeId ON
dbo.EducationCourseVenue.GlobalEntityGUID = dbo.CommunicationTypeGlobalEntityMap.GlobalEntityGUID
INNER JOIN
dbo.Country
INNER JOIN
dbo.Address ON dbo.Country.Id = dbo.Address.CountryId
INNER JOIN
dbo.CountryRegion ON dbo.Country.RegionId = dbo.CountryRegion.Id ON
dbo.CommunicationTypeGlobalEntityMap.CommunicationTypeItemId = dbo.Address.Id
LEFT OUTER JOIN
dbo.AddressPostalDistrictMap
INNER JOIN
dbo.RegionItemDistrictMap ON dbo.AddressPostalDistrictMap.Id = dbo.RegionItemDistrictMap.Id
INNER JOIN
dbo.RegionTypeItem ON dbo.RegionItemDistrictMap.RegionTypeItemId = dbo.RegionTypeItem.Id ON
dbo.Address.Id = dbo.AddressPostalDistrictMap.AddressId
LEFT OUTER JOIN
dbo.RHSGarden
INNER JOIN
dbo.AddressGeographics ON dbo.RHSGarden.Id = dbo.AddressGeographics.NearestRHSGardenId ON dbo.Address.Id = dbo.AddressGeographics.AddressId
WHERE (dbo.CommunicationType.Code = 'AD')
SQL的这种特殊的线是一个问题,在LINQ
FROM dbo.Organisation
INNER JOIN
dbo.EducationCourseVenue
INNER JOIN
dbo.EducationCourseVenueLocation ON dbo.EducationCourseVenue.Id = dbo.EducationCourseVenueLocation.EducationCourseVenueId ON
dbo.Organisation.GlobalEntityGUID = dbo.EducationCourseVenue.GlobalEntityGUID
我不知道该怎么做LINQ中没有指定键连接,然后做另一个加盟低于联接。
任何想法?
看到像'LinkPad'工具或表明您正在使用的Linq以便有人可以确定你做错了什么...... – MethodMan 2015-02-24 14:40:36
根据@ NLindbom的回答,看起来像你原来的SQL只是有点困惑。 SQL可能允许这样做,但更具可读性的等价物是每个JOIN有一个ON子句,这使得转换为LINQ变得更加容易。说了这么多,意见不是邪恶的,这可能是一个很好的候选人,而不是转向LINQ。 – Rory 2015-06-24 09:31:06