修正多處 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

@@ -258,8 +258,12 @@ public partial class admin_hr_import : MyWeb.config
int f_num = fDt.Where(x => x.f_number == ValString(sheet.Cells[currentRow, 1].Text.Trim())).Select(x => x.num).FirstOrDefault(); //信眾編號id
int a_num = aDt.Where(x => x.u_id == ValString(sheet.Cells[currentRow, 12].Text.Trim())).Select(x => x.num).FirstOrDefault(); //系統帳號id
int g_sum = gDt.Where(x => x.ToString() == ValString(sheet.Cells[currentRow, 16].Text.Trim())).FirstOrDefault(); //組別
int t_sum = tDt.Where(x => x.ToString() == ValString(sheet.Cells[currentRow, 17].Text.Trim())).FirstOrDefault(); //職稱
// ❌ 錯誤寫法: int g_sum = gDt.Where(x => x.ToString() == ValString(...)).FirstOrDefault();
// 應該先轉換為整數再比較,避免不必要的字串轉換
int.TryParse(ValString(sheet.Cells[currentRow, 16].Text.Trim()), out int g_sum_parsed);
int g_sum = gDt.Contains(g_sum_parsed) ? g_sum_parsed : 0; //組別
int.TryParse(ValString(sheet.Cells[currentRow, 17].Text.Trim()), out int t_sum_parsed);
int t_sum = tDt.Contains(t_sum_parsed) ? t_sum_parsed : 0; //職稱
//定義日期欄位格式
sheet.Cells[currentRow, 6].Style.Numberformat.Format = "yyyy-MM-dd";