以下は私のSQLクエリLINQに上記のクエリを変換しようと第二のテーブルをマッピングすることはできません左外側は
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';
AMで参加して、3つのテーブルから3つの列を取得します。これまでに派生した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 + ")"
})
上記のSQL結果がLINQクエリに届くように助けてください。
おかげ
質問は大変です。すべてのこれらの[と]プラス絶対に無駄なエイリアスは、このユーザーが最高の敵になります。それから冗長な(そして)狂った量があります。私はあなたを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 –