我有兩個 SQL Server 表JobOrders和OrderItems. 我想從我的 ASP.NET Core Web API 控制器中檢索每個JobOrders訂單數量的資料。OrderItems
我的兩個表和期望的結果如下:
作業訂單
| 開齋節 | 訂單號 | 訂單狀態 |
|---|---|---|
| 1 | 1001 | 1 |
| 2 | 1002 | 5 |
| 3 | 1003 | 3 |
訂單項
| 開齋節 | 訂單號 | 訂單狀態 | 數量 |
|---|---|---|---|
| 1 | 1001 | 美國廣播公司 | 2 |
| 2 | 1001 | ADC | 1 |
| 3 | 1002 | jcb | 5 |
| 4 | 1002 | vbb | 2 |
| 5 | 1002 | xyz | 8 |
| 6 | 1003 | akp | 4 |
預期結果
[
{
OrderID : 1001,
OrderStatus : 1,
Qty : 3
},
{
OrderID : 1002,
OrderStatus : 5,
Qty : 15
},
{
OrderID : 1003,
OrderStatus : 3,
Qty : 4
}
]
這是我的控制器代碼:
var query = from orders in myDbContext.JobOrders
join allorderitems in myDbContext.OrderItems on orders.Eid equals allorderitems.OrderId into orderitems
from orderitem in orderitems
.GroupBy(i => i.OrderId)
.Select(g => new
{
Qty = g.Sum(i => i.Qty),
})
select new
{
OrderID = orders.Oid,
OrderStatus = orders.Status,
Qty = orderitem.Qty,
};
var result = query.OrderByDescending(m => m.OrderID).ToList();
return Ok(result);
郵遞員回傳:
500內部服務器錯誤:
System.InvalidOperationException:無法翻譯 LINQ 運算式。以可翻譯的形式重寫查詢,或通過插入對“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的呼叫顯式切換到客戶端評估。
uj5u.com熱心網友回復:
GroupJoin如果您不打算進行 LETF JOIN,請不要使用。它在 EF Core 中的支持有限。
var query =
from order in myDbContext.JobOrders
join oi in myDbContext.OrderItems on order.Eid equals oi.OrderId
group oi by new { order.OrderId, order.Status } into g
select new
{
OrderID = g.Key.OrderId,
OrderStatus = g.Key.Status,
Qty = g.Sum(x => x.Qty)
};
var result = query.OrderByDescending(m => m.OrderID).ToList();
return Ok(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510684.html
