-1
Я использую SQL 2014 и vs 2013 и EF4.Как я могу присоединиться к 4 таблице в запросе Linq
У меня есть 4 таблицы в базе данных:
SupplierPurchaseAlarm
Order
OrderDetail
Product
Я хочу присоединиться к этим таблицам и получить NewOrderCount
, AllSellProductCount
и SumOf Price
в orderDetail
.
Я написал этот код, но он не работает для меня:
public ShowAllSupplierAlarmInfo GetAllMsgAndAlarmCount(long suplierId)
{
try
{
var supplierPurchaseList = _db.Context.SuplierPurchaseAlarms.Where(x => x.SuplierId == suplierId).AsQueryable();
var query = from supPurchaseMsg in supplierPurchaseList
join ord in _db.Context.Orders on supPurchaseMsg.OrderId equals ord.OrderID
join ordDetail in _db.Context.OrderDetails on ord.OrderID equals ordDetail.OrderID
join prd in _db.Context.Products on ordDetail.ProductID equals prd.ProductID
where prd.SupplierID==supPurchaseMsg.SuplierId
where
ord.IsPayed && ord.CurentOrderState == (int) EnumCurrentOrderState.ProductIsPreparingToSend ||
ord.CurentOrderState == (int) EnumCurrentOrderState.TheProductIsWaitingForApprovalBySuppliers
group ordDetail by ord
into j
select new
{
OrderCount = j.GroupBy(x => x.Order.OrderID).Count(),
SellProductCount = j.Sum(x => x.Quantity),
AllOrderCount = j.Count(x => x.Order.IsPayed),
profit = j.Sum(x=>x.UnitPrice*x.Quantity)
};
var res = new ShowAllSupplierAlarmInfo()
{
PurchaseAlertCount = supplierPurchaseList.Count(x => x.TypeId==(int)AlarmTypeId.Warning)
};
foreach (var prd in query)
{
res.SellCount += prd.SellProductCount;
res.NewOrderCount += prd.OrderCount;
res.AllOrderCount += prd.AllOrderCount;
res.Profit = prd.profit;
}
return res;
}