[英]SQL to Linq-Entities
请帮助我在LINQ-Enitites中转换此SQL查询
select e.RowMeterialName,f.RowUnitName,*,isnull((b.Quantity - (Select SUM(a.Quantity) from PurchaseDetail a
join PurchaseMaster c on a.PurchaseId=c.PurchaseId
where a.RawMetId=b.RawMetrialId and c.PurchaseOrderId=b.PurchaseOrderId)),b.Quantity) as Remain
from PurchaseOrderDetail b
join RawMeterialMaster e on b.RawMetrialId=e.RawMetId
join RawUnitMaster f on e.RawUnitId=f.RowUnitId
where b.PurchaseOrderId=@PurchaseOrderId
请帮我。
这是一个远景,但是您可以尝试:
PurchaseDetail
.Join
(
PurchaseMaster,
x=>x.PurchaseId,
x=>x.PurchaseId,
(detail,master)=>new {detail,master}
)
.Join
(
PurchaseOrderMaster,
x=>x.PurchaseOrderId,
x=>x.PurchaseOrderId,
(joined,ordermaster)=>new{detail=joined.detail,master=joined.master,ordermaster}
)
.Select
(
x=>
new{detail.Quantity,detail.RawMetId}
)
.GroupBy(x=>x.RawMetId)
.Select
(
x=>
new
{
RawMetId=x.Key,
Quantity=x.Sum(z=>z.Quantity)
}
)
.Join
(
PurchaseOrderDetail,
x=>x.RawMetrialId,
x=>x.RawMetId,
(subquery,orderdetail)=>new{subquery,Remain=subquery.Quantity - orderdetail.Quantity}
)
谢谢大家,但我在此查询中找到了结果
from b in db.PurchaseOrderDetails
select new
{
b.RawMeterialMaster.RowMeterialName,
PurOrderDetailId = b.PurOrderDetailId,
PurchaseOrderId = b.PurchaseOrderId,
RawMetrialId = b.RawMetrialId,
DueOn = b.DueOn,
Quantity = b.Quantity,
ItemRate = b.ItemRate,
MetrialUnitsId = b.MetrialUnitsId,
Remark = b.Remark,
RowUnitName = b.RawMeterialMaster.RawUnitMaster.RowUnitName,
ReOrderQuantity = (decimal?)b.RawMeterialMaster.ReOrderQuantity,
Remain = ((System.Decimal?)b.Quantity -
(from a in db.PurchaseDetails
where
a.RawMetId == b.RawMetrialId &&
a.PurchaseMaster.PurchaseOrderId == b.PurchaseOrderId
select new
{
a.Quantity
}).Sum(p => p.Quantity) ?? (System.Decimal?)b.Quantity)
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.