下面是我的SQL查询左外连接,并从三个表拿到三列
SELECT (((((('L' + (CONVERT(NVARCHAR(MAX), t0.Length))) + 'W') + (CONVERT(NVARCHAR(MAX), t0.Width))) +
'H') + (CONVERT(NVARCHAR(MAX), t0.Height))) + ' - ') + t0.DimUoM AS 'Dimensions'
, (((CONVERT(NVARCHAR(MAX), t0.NetWt)) + ' (') + t0.NetWtUoM) + ')' AS 'Weight'
, t0.UPCCode
, t1.DisplayBrand AS 'Brand'
, t2.ID
FROM SmartSearchNewQA.dbo.MaterialMaster AS t0
LEFT OUTER JOIN dbo.BrandConversion AS t1
ON t0.Brand = t1.SAPBrand
LEFT OUTER JOIN ClickCommerce.dbo.tblWarrantyPartReturn AS t2
ON t0.MaterialNumber = t2.PartNumber
LEFT OUTER JOIN ClickCommerce.dbo.tblWarrantyPartReturnAddress AS t3
ON t2.ReturnCode = t3.ReturnCode
WHERE t0.MaterialNumber = 'S1-326000' AND
t2.DistributorId = '00100';
正在尝试上述查询LINQ转换并不能映射第二个表。请找到下面的LINQ我推导到目前为止
from mm in ctx.MaterialMasters
join bc in ctx.BrandConversions on mm.Brand equals bc.SAPBrand into bc1
from brandConv in bc1.DefaultIfEmpty()
join wp1 in ctx.tblWarrantyPartReturns
on mm.MaterialNumber equals wp1.PartNumber into bc2
from partconv in bc2.DefaultIfEmpty()
join wp2 in ctx.tblWarrantyPartReturnAddresses
on bc2
from partconv2 in bc3.DefaultIfEmpty()
where mm.MaterialNumber == materialNumber
select new MaterialHeader
{
Brand = brandConv.DisplayBrand,
Dimensions = "L" + mm.Length + ":W" + mm.Width + ":H" + mm.Height + " - " + mm.DimUoM,
UPCCode = mm.UPCCode,
Weight = mm.NetWt + " (" + mm.NetWtUoM + ")"
})
请帮助我与LINQ查询到达上述SQL结果。
谢谢
哎呀,该查询是可怕的阅读。所有这些[和]绝对无用的别名使得这个用户充其量是充满敌意的。然后是疯狂的多余的(和)。我知道你试图将它转移到LINQ,但你应该阅读更多关于为什么这些别名是坏的。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-table-aliases-like-a-b-c-or-t1-t2-t3.aspx –