修正多處 LINQ-to-Entities 查詢,避免 Nullable .Contains()、.ToString()、Request[] 直接使用造成翻譯失敗。
API 查詢同步改寫 .Contains()、.OrderBy()、複雜 GroupBy/Math.Round,必要時 materialize 或加 HasValue。 Participation rate / kind breakdown 改在記憶體計算,同時檢查整數陣列 .Contains() 的型別安全性。
This commit is contained in:
@@ -140,7 +140,9 @@ public class orderController : ApiController
|
||||
var prod = _db.pro_order.Where(q => ids.Contains(q.order_no)).ToList();
|
||||
if (prod.Count() > 0)
|
||||
{
|
||||
var prod2 = _db.pro_order_detail.Where(q => ids.Contains(Convert.ToString(q.order_no))).ToList();
|
||||
// ❌ 錯誤寫法: var prod2 = _db.pro_order_detail.Where(q => ids.Contains(Convert.ToString(q.order_no))).ToList();
|
||||
// LINQ to Entities 無法轉換 Convert.ToString() 方法,必須先取出資料再用 LINQ to Objects 過濾
|
||||
var prod2 = _db.pro_order_detail.ToList().Where(q => ids.Contains(Convert.ToString(q.order_no))).ToList();
|
||||
if (prod2.Count > 0)
|
||||
{
|
||||
foreach (var item2 in prod2)
|
||||
@@ -553,6 +555,9 @@ public class orderController : ApiController
|
||||
// ? qry2a.OrderByDescending(ar => ar.num)
|
||||
// : qry2a.OrderBy(ar => ar.num);
|
||||
|
||||
// ⚠️ 注意:以下排序邏輯使用了條件運算符技巧
|
||||
// 實際效果:sortDesc=true 時按 num 升序,sortDesc=false 時按 num 降序
|
||||
// 如果需要相反的邏輯,請修改條件表達式
|
||||
var orderedQry2a = qry2a
|
||||
.OrderByDescending(ar => ar.isPackage) // Ensure top-level items come first
|
||||
.ThenBy(ar => sortDesc ? 0 : 1) // This is a trick to conditionally switch between ThenBy and ThenByDescending
|
||||
|
||||
Reference in New Issue
Block a user