我是linq和EF的首发。我有4个表如何加入linq的4张表
CurrencyUnit
CurrencyUnitID CurrencyName
-------------------------------
1 Dolar
2 Pond
请求
RequestID WayBillNo
--------------------------
1 10000
2 10001
COSTTYPE
CostTypeID CostName
-------------------------------
1 A
2 B
RequestCost
RequestId CostId CurrencyUnitId Amount Remark
-----------------------------------------------------------
1 1 1 200
1 2 1 400
2 2 2 1000
我想加盟此4表,得到这样的结果
结果(表)
RequestId WayBillNo CostId CostName CurrencyUnitId CurrencyUnitName Amount Remark
------------------------------------------------------------------------------------------
1 10000 1 A 1 Dollar 200
1 10000 2 B 2 Pond 400
2 10001 1 A 0 0
2 10001 2 B 2 Pond 1000
我写这篇文章的查询
var items = (from rc in context.CLEARANCE_COST
join c in context.COST_TYPES on rc.COST_ID equals c.COST_ID
join d in context.CLEARANCE_REQUEST on rc.REQUEST_ID equals d.REQUEST_ID
join f in context.CURRENCY_UNITS on rc.CURRENCY_ID equals f.CURRENCY_ID
select new
{
rc.COST_AMOUNT,
c.COST_ID,
c.COST_NAME,
d.WAYBILL_NO,
f.CURRENCY_NAME
}).ToList();
但得到这样的结果(B表)
RequestId WayBillNo CostId CostName CurrencyUnitId CurrencyUnitName Amount Remark
1 10000 1 A 1 Dollar 200
1 10000 2 B 2 Pond 400
2 10001 2 B 2 Pond 1000
即 如果请求不符合成本显示该请求的所有成本和设定量值0,例如桌子有4行,但乙表具有表A 3行用于请求2成本1设定量0但在表B没有设置,我想设置。
你想执行一个内部或外部连接吗? – munissor
嗨,检查答案的查询............ –
@munissor:外部 – Pouya