我是 linq 和 EF 的初学者。我有 4 张桌子
货币单位
CurrencyUnitID CurrencyName
-------------------------------
1 Dolar
2 Pond
要求
RequestID WayBillNo
--------------------------
1 10000
2 10001
成本类型
CostTypeID CostName
-------------------------------
1 A
2 B
请求成本
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
即,如果请求没有成本,则显示该请求的所有成本并设置 Amount 值 0 ,例如 A 表有 4 行,但 B 表在表 A 中有 3 行,请求 2 成本 1 设置金额 0 但在表 B 中未设置,我要设置。