修正多處 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:
2025-11-14 23:40:55 +08:00
parent 4fcbfb3801
commit 27f916eb9c
14 changed files with 245 additions and 115 deletions

View File

@@ -104,7 +104,9 @@ public partial class admin_activity_index2 : MyWeb.config
sd.AppendChild(tr);
//查詢要匯出的資料
var fileDt = _db.files.Where(f => f.subject.Contains(fileTxt.Value)).Select(f => f.num.ToString());//文件
// ❌ 錯誤寫法: var fileDt = _db.files.Where(f => f.subject.Contains(fileTxt.Value)).Select(f => f.num.ToString());
// 改為整數陣列,避免後續查詢中使用 .ToString()
var fileDt = _db.files.Where(f => f.subject.Contains(fileTxt.Value)).Select(f => f.num).ToArray();//文件
var qry = _db.actItems.AsQueryable();
@@ -139,7 +141,11 @@ public partial class admin_activity_index2 : MyWeb.config
if (!string.IsNullOrEmpty(s_kind.SelectedValue))
qry = qry.Where(o => o.kind == Convert.ToInt32(s_kind.SelectedValue));
if (!string.IsNullOrEmpty(fileTxt.Value))
qry = qry.Where(o => o.actItem_files.Where(f2 => f2.actItem_num == o.num && fileDt.ToArray().Contains(f2.files_num.ToString())).Count() > 0);
{
// ❌ 錯誤寫法: qry = qry.Where(o => o.actItem_files.Where(f2 => f2.actItem_num == o.num && fileDt.ToArray().Contains(f2.files_num.ToString())).Count() > 0);
// fileDt 已改為整數陣列,直接比較即可
qry = qry.Where(o => o.actItem_files.Where(f2 => f2.actItem_num == o.num && fileDt.Contains(f2.files_num)).Count() > 0);
}
var tdesc = publicFun.enum_desc<Model.activity.category>();
qry = qry.OrderByDescending(o => o.num);