【发布时间】:2011-10-21 08:03:05
【问题描述】:
如何将下面的代码从 SQL 转换为 Linq
SELECT CF.CustomerProfileId,CF.Salutation,CF.Gender,CF.LastName,
CF.DateOfBirth,AD.Line1,AD.Line2,AD.Line3,AD.Line4,AD.Line5,
AD.Country,AD.ElectronicAddressDesc,NCIType.NationalCustomerIdentifierTypeDesc,
NCI.NationalCustomerIdentifier from CustomerProfile CF
left join Address AD on CF.CustomerProfileId = CF.CustomerProfileId
left join NationalCustomerIdentifiers NCI on CF.CustomerProfileId = NCI.CustomerProfileId
left join NationalCustomerIdentifierType NCIType on NCI.NationalCustomerIdentifierTypeId = NCIType.NationalCustomerIdentifierTypeId
where CF.CustomerProfileId = @CustomerProfileid and CF.Version = @Version
【问题讨论】:
-
如果它在我所在的位置,我会从该查询创建一个视图,然后在您的代码中导入该视图。
-
提示。尝试将其分解为多个逻辑 LINQ 查询,然后使用延迟执行将它们连接起来,就像将 C#/VB 代码重构为可管理的块一样。提示 2:对左连接使用 DefaultIfEmpty 或参见提示 3。提示 3:使用对象之间的自然关联来完全避免连接。
-
似乎 DefaultIfEmpty 不适用于 Linq to entity。在花了很多时间寻找左外连接之后,我最终决定使用 VIEW。
标签: sql linq linq-to-sql linq-to-entities