From 5ae262205c6ed2a497cad6a5b7ec08da7dd13dbc Mon Sep 17 00:00:00 2001 From: yiming Date: Wed, 12 Nov 2025 15:58:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=9F=A5=E8=A9=A2=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/App_Code/api/activityController.cs | 56 ++-- web/App_Code/api/orderController.cs | 18 +- web/App_Code/api/projectController.cs | 16 +- web/App_Code/appapi/apporderController.cs | 54 ++-- web/admin/HR/kind_reg.aspx.cs | 10 +- web/admin/HR/title_reg.aspx.cs | 9 +- web/admin/accounting/kind_reg.aspx.cs | 10 +- web/admin/accounting/kind_reg2.aspx.cs | 10 +- web/admin/activity/kind_reg.aspx.cs | 10 +- web/admin/activity/kind_reg2.aspx.cs | 10 +- web/admin/bed/kind_reg.aspx.cs | 14 +- web/admin/news/kind_reg.aspx.cs | 10 +- web/admin/project/kind_reg.aspx.cs | 10 +- web/admin/stock/kind_reg.aspx.cs | 10 +- web/admin/supplier/kind_reg.aspx.cs | 10 +- web/test_asenumerable_check.aspx | 28 ++ web/test_asenumerable_check.aspx.cs | 346 ++++++++++++++++++++++ 17 files changed, 501 insertions(+), 130 deletions(-) create mode 100644 web/test_asenumerable_check.aspx create mode 100644 web/test_asenumerable_check.aspx.cs diff --git a/web/App_Code/api/activityController.cs b/web/App_Code/api/activityController.cs index 714eabc..3f715c2 100644 --- a/web/App_Code/api/activityController.cs +++ b/web/App_Code/api/activityController.cs @@ -63,17 +63,17 @@ public class activityController : ApiController // DELETE api//5 public void Delete(int id) { - var prod = _db.activities.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 + var prod = _db.activities.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { //刪除相關資料 - var prod2 = _db.activity_relating.AsEnumerable().Where(q => q.activity_num == id).ToList(); //相關項目 + var prod2 = _db.activity_relating.Where(q => q.activity_num == id).ToList(); //相關項目 if (prod2.Count > 0) { //查詢結果全部刪除 _db.activity_relating.RemoveRange(prod2); } - var prod3 = _db.activity_spares.AsEnumerable().Where(q => q.activity_num == id).ToList(); //備品項目 + var prod3 = _db.activity_spares.Where(q => q.activity_num == id).ToList(); //備品項目 if (prod3.Count > 0) { _db.activity_spares.RemoveRange(prod3); @@ -98,7 +98,7 @@ public class activityController : ApiController [Route("api/activity/DeleteItem/{id}")] public void DeleteItem(int id) { - var prod = _db.actItems.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 + var prod = _db.actItems.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 /*if (prod != null) { //var prod2 = _db.actItem_files.AsEnumerable().Where(q => q.actItem_num == id).ToList(); //相關項目 @@ -144,11 +144,11 @@ public class activityController : ApiController { var ids = nums.TrimEnd(',').Split(',').Select(s => int.Parse(s)); - var prod = _db.activities.AsEnumerable().Where(q => ids.Contains(q.num)).ToList(); + var prod = _db.activities.Where(q => ids.Contains(q.num)).ToList(); if (prod.Count() > 0) { //var prod2 = _db.activity_relating.AsEnumerable().Where(q => ids.Contains(Convert.ToInt32(q.activity_num))).ToList(); - var prod2 = _db.activity_relating.AsEnumerable().Where(q => ids.Any(x => x == q.activity_num)).ToList(); + var prod2 = _db.activity_relating.Where(q => ids.Contains(q.activity_num)).ToList(); if (prod2.Count > 0) { _db.activity_relating.RemoveRange(prod2); @@ -156,7 +156,7 @@ public class activityController : ApiController } //var prod3 = _db.activity_spares.AsEnumerable().Where(q => ids.Contains(Convert.ToInt32(q.activity_num))).ToList(); - var prod3 = _db.activity_spares.AsEnumerable().Where(q => ids.Any(x => x == q.activity_num)).ToList(); + var prod3 = _db.activity_spares.Where(q => ids.Contains(q.activity_num)).ToList(); if (prod3.Count > 0) { _db.activity_spares.RemoveRange(prod3); @@ -186,11 +186,11 @@ public class activityController : ApiController if (!string.IsNullOrEmpty(nums)) { var ids = nums.TrimEnd(',').Split(',').Select(s => int.Parse(s)); - var prod = _db.actItems.AsEnumerable().Where(q => ids.Contains(q.num)).ToList(); + var prod = _db.actItems.Where(q => ids.Contains(q.num)).ToList(); if (prod.Count() > 0) { //var prod2 = _db.actItem_files.AsEnumerable().Where(q => ids.Contains(Convert.ToInt32(q.actItem_num))).ToList(); - var prod2 = _db.actItem_files.AsEnumerable().Where(q => ids.Any(x => x == q.actItem_num)).ToList(); + var prod2 = _db.actItem_files.Where(q => ids.Contains(q.actItem_num)).ToList(); if (prod2.Count > 0) { _db.actItem_files.RemoveRange(prod2); @@ -224,7 +224,7 @@ public class activityController : ApiController public IHttpActionResult GetList([FromBody] Model.ViewModel.activity q, int page, int pageSize = 10, string sortBy = "", bool sortDesc = false) { - var qry = _db.activities.AsEnumerable(); + var qry = _db.activities.AsQueryable(); if (!string.IsNullOrEmpty(q.subject)) qry = qry.Where(o => o.subject.Contains(q.subject)); if (q.kind.HasValue && q.kind > 0) @@ -319,7 +319,7 @@ public class activityController : ApiController { //var stockDt = _db.stocks.AsEnumerable(); ;//庫存 - var fileDt = _db.files.AsEnumerable().Where(f => f.subject.Contains(q.fileTxt)).Select(f => f.num.ToString());//文件 + var fileDt = _db.files.Where(f => f.subject.Contains(q.fileTxt)).Select(f => f.num.ToString());//文件 //每個品項在每個倉庫的結餘量 var stockDt = ( @@ -348,7 +348,7 @@ public class activityController : ApiController ////var qry = _db.actItems.Where(a => a.IsDel == false).AsEnumerable();////不確定是否新增欄位? 先註解 - var qry = _db.actItems.AsEnumerable(); + var qry = _db.actItems.AsQueryable(); if (!string.IsNullOrEmpty(q.subject)) qry = qry.Where(o => o.subject.Contains(q.subject.Trim())); @@ -711,7 +711,7 @@ public class activityController : ApiController [Route("api/activity/DeleteFilesItem/{id}")]//刪除品項的相關文件 public void DeleteFilesItem(int id) { - var prod = _db.actItem_files.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 + var prod = _db.actItem_files.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { @@ -731,7 +731,7 @@ public class activityController : ApiController if (this_id > 0) { //檢查 - var qry = _db.activity_kind_detail.AsEnumerable(); + var qry = _db.activity_kind_detail.AsQueryable(); qry = qry.Where(o => o.activity_kind_num == this_id); int i = 1; @@ -830,7 +830,7 @@ public class activityController : ApiController [Route("api/activity/DeleteActKindDetail/{id}")]//刪除活動分類的detail public void DeleteActKindDetail(int id) { - var prod = _db.activity_kind_detail.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 + var prod = _db.activity_kind_detail.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { @@ -849,7 +849,7 @@ public class activityController : ApiController if (this_act_id > 0) { //檢查 - var prod = _db.activities.AsEnumerable().Where(o => o.num == this_act_id).FirstOrDefault(); + var prod = _db.activities.Where(o => o.num == this_act_id).FirstOrDefault(); if (prod != null) { int kind = prod.kind ?? 0; //分類 @@ -927,7 +927,7 @@ public class activityController : ApiController if (kind > 0) { int i = 1; - var qry2 = _db.activity_kind_detail.AsEnumerable(); + var qry2 = _db.activity_kind_detail.AsQueryable(); qry2 = qry2.Where(o => o.activity_kind_num == kind); var count2 = qry2.Count(); //pageSize = count2;//一次取回?? if (pageSize > 0) qry2 = qry2.ToPagedList(page, pageSize); @@ -992,7 +992,7 @@ public class activityController : ApiController public IHttpActionResult GetKindList([FromBody] Model.ViewModel.activity_kind q, int page, int pageSize = 10, string sortBy = "", bool sortDesc = false) { - var qry = _db.activity_kind.AsEnumerable(); + var qry = _db.activity_kind.AsQueryable(); if (q.num.HasValue && q.num > 0) qry = qry.Where(o => o.num == q.num); if (!string.IsNullOrEmpty(q.kind)) @@ -1031,7 +1031,7 @@ public class activityController : ApiController { if (id > 0) { - var qry = _db.activity_kind.AsEnumerable(); + var qry = _db.activity_kind.AsQueryable(); qry = qry.Where(o => o.num == id); var prop3 = qry.FirstOrDefault(); if (prop3 != null) @@ -1151,7 +1151,7 @@ public class activityController : ApiController [Route("api/activity/DeleteRelatingData/{id}")]//刪除活動的相關資料 public void DeleteRelatingData(int id) { - var prod = _db.activity_relating.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 + var prod = _db.activity_relating.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { @@ -1169,14 +1169,14 @@ public class activityController : ApiController if (this_act_id > 0) { //檢查 - var prod = _db.activities.AsEnumerable().Where(o => o.num == this_act_id).FirstOrDefault(); + var prod = _db.activities.Where(o => o.num == this_act_id).FirstOrDefault(); if (prod != null) { int kind = prod.kind ?? 0; //分類 - var qry1 = _db.activity_spares.AsEnumerable(); + var qry1 = _db.activity_spares.AsQueryable(); qry1 = qry1.Where(o => o.activity_num == this_act_id); qry1 = qry1.OrderBy(o => o.num); @@ -1278,7 +1278,7 @@ public class activityController : ApiController [Route("api/activity/DeleteSparesData/{id}")]//刪除活動的備品資料 public void DeleteSparesData(int id) { - var prod = _db.activity_spares.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 + var prod = _db.activity_spares.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { @@ -1331,7 +1331,7 @@ public class activityController : ApiController string sortBy = "", bool sortDesc = false) { - var qry = _db.activity_check.AsEnumerable(); + var qry = _db.activity_check.AsQueryable(); if (!string.IsNullOrEmpty(q.activityTxt)) qry = qry.Where(o => o.activity.subject.Contains(q.activityTxt.Trim())); @@ -1416,7 +1416,7 @@ public class activityController : ApiController [Route("api/activity/DeleteCheck/{id}")] public void DeleteCheck(int id) { - var prod = _db.activity_check.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 + var prod = _db.activity_check.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { @@ -1439,7 +1439,7 @@ public class activityController : ApiController if (!string.IsNullOrEmpty(num[i])) ids[i] = Convert.ToInt32(num[i]); } - var prod = _db.activity_check.AsEnumerable().Where(q => ids.Contains(q.num)).ToList(); + var prod = _db.activity_check.Where(q => ids.Contains(q.num)).ToList(); if (prod.Count() > 0) { @@ -1458,7 +1458,7 @@ public class activityController : ApiController { DateTime _now = DateTime.Now; - var qry = _db.activities.AsEnumerable(); + var qry = _db.activities.AsQueryable(); if (q.reg_time1.HasValue) qry = qry.Where(o => o.reg_time >= q.reg_time1.Value); @@ -1510,7 +1510,7 @@ public class activityController : ApiController public IHttpActionResult GetCategoryKindList([FromBody] Model.ViewModel.activity_category_kind q, int page, int pageSize = 10, string sortBy = "", bool sortDesc = false) { - var qry = _db.activity_category_kind.AsEnumerable(); + var qry = _db.activity_category_kind.AsQueryable(); if (q.num.HasValue && q.num > 0) qry = qry.Where(o => o.num == q.num); if (!string.IsNullOrEmpty(q.kind)) diff --git a/web/App_Code/api/orderController.cs b/web/App_Code/api/orderController.cs index c4c280c..c0ba040 100644 --- a/web/App_Code/api/orderController.cs +++ b/web/App_Code/api/orderController.cs @@ -99,7 +99,7 @@ public class orderController : ApiController { if (id > 0) { - var prod = _db.pro_order_detail.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 + var prod = _db.pro_order_detail.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { //刪除掛單表單 @@ -134,7 +134,7 @@ public class orderController : ApiController { var ids = nums.TrimEnd(',').Split(','); - var prod = _db.pro_order.AsEnumerable().Where(q => ids.Contains(q.order_no)).ToList(); + var prod = _db.pro_order.Where(q => ids.Contains(q.order_no)).ToList(); if (prod.Count() > 0) { var prod2 = _db.pro_order_detail.AsEnumerable().Where(q => ids.Contains(Convert.ToString(q.order_no))).ToList(); @@ -201,7 +201,7 @@ public class orderController : ApiController string sortBy = "", bool sortDesc = false) { - var qry = _db.pro_order.AsEnumerable(); + var qry = _db.pro_order.AsQueryable(); //var aIDt = _db.actItems.AsEnumerable().Where(f => f.subject.Contains(q.actItemTxt.Trim())).Select(f => f.num);//品項 @@ -801,15 +801,15 @@ public class orderController : ApiController { //家族 : 家長是我的人,跟我同家長的人,我的家長本人,我本人 - var cc = _db.followers.Where(x => x.num == _follower || x.leader == _follower).Select(x => x.num); - var qry = _db.followers.AsEnumerable().Where(f => cc.Any(x => x == f.num) || cc.Any(x => x == f.leader)); + var ccList = _db.followers.Where(x => x.num == _follower || x.leader == _follower).Select(x => x.num).ToList(); + var qry = _db.followers.Where(f => ccList.Contains(f.num) || ccList.Contains(f.leader)); //未付款資料 - var unpayDt = _db.pro_order_detail.AsEnumerable(); + var unpayDt = _db.pro_order_detail.AsQueryable(); var coDt = unpayDt.Where(x => x.keyin1 == (int)Model.pro_order.detailKeyin1.Collection);//只列出報名狀態為"收款中"的項目 //未付款訂單 - var orderDt = _db.pro_order.AsEnumerable(); + var orderDt = _db.pro_order.AsQueryable(); if (!string.IsNullOrEmpty(order_no)) orderDt = orderDt.Where(x => x.order_no == order_no); orderDt = orderDt.Where(x => coDt.Select(d => d.order_no).Contains(x.order_no)); @@ -855,7 +855,7 @@ public class orderController : ApiController { //未付款資料 - var unpayDt = _db.pro_order_detail.AsEnumerable(); + var unpayDt = _db.pro_order_detail.AsQueryable(); unpayDt = unpayDt.Where(x => x.keyin1 == (int)Model.pro_order.detailKeyin1.Collection);//只列出報名狀態為"收款中"的項目 if (!string.IsNullOrEmpty(q.order_no)) @@ -1118,7 +1118,7 @@ public class orderController : ApiController [Route("api/order/DeleteRecordDetail/{id}")]//刪除收款註記 public void DeleteRecordDetail(int id) { - var prod = _db.pro_order_record.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 + var prod = _db.pro_order_record.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { diff --git a/web/App_Code/api/projectController.cs b/web/App_Code/api/projectController.cs index e6f6b68..82660a9 100644 --- a/web/App_Code/api/projectController.cs +++ b/web/App_Code/api/projectController.cs @@ -48,7 +48,7 @@ public class projectController : BaseApiController // DELETE api//5 public void Delete(int id) { - var prod = _db.projects.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 + var prod = _db.projects.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.project_sub.RemoveRange(prod.project_sub); //刪除活動資料 @@ -75,7 +75,7 @@ public class projectController : BaseApiController if (!string.IsNullOrEmpty(nums)) { var ids = nums.TrimEnd(',').Split(',').Select(s => int.Parse(s)); - var prod = _db.projects.AsEnumerable().Where(q => ids.Contains(q.num)).ToList(); + var prod = _db.projects.Where(q => ids.Contains(q.num)).ToList(); if (prod.Count() > 0) { foreach (var item in prod) @@ -103,7 +103,7 @@ public class projectController : BaseApiController { if (id > 0) { - var prod = _db.project_sub.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 + var prod = _db.project_sub.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.project_sub.Remove(prod); @@ -117,7 +117,7 @@ public class projectController : BaseApiController public IHttpActionResult GetList([FromBody] Model.ViewModel.project q, int page, int pageSize = 10, string sortBy = "", bool sortDesc = false) { - var qry = _db.projects.AsEnumerable(); + var qry = _db.projects.AsQueryable(); if (!string.IsNullOrEmpty(q.subject)) qry = qry.Where(o => o.subject.Contains(q.subject.Trim())); @@ -192,7 +192,7 @@ public class projectController : BaseApiController public IHttpActionResult GetKindList([FromBody] Model.ViewModel.project_kind q, int page, int pageSize = 10, string sortBy = "", bool sortDesc = false) { - var qry = _db.project_kind.AsEnumerable(); + var qry = _db.project_kind.AsQueryable(); if (!string.IsNullOrEmpty(q.kind)) qry = qry.Where(o => o.kind.Contains(q.kind)); @@ -247,7 +247,7 @@ public class projectController : BaseApiController if (q.num.HasValue) { - var qry = _db.project_sub.AsEnumerable(); + var qry = _db.project_sub.AsQueryable(); qry = qry.Where(o => o.pro_id == q.num.Value); @@ -337,11 +337,11 @@ public class projectController : BaseApiController public IHttpActionResult GetPatronizeList([FromBody] Model.ViewModel.pro_order_detail q, int page, int pageSize = 10, string sortBy = "", bool sortDesc = false) { - var projectDt = _db.projects.AsEnumerable(); ;//專案 + var projectDt = _db.projects.AsQueryable(); ;//專案 try { - var qry = _db.pro_order_detail.AsEnumerable(); + var qry = _db.pro_order_detail.AsQueryable(); qry = qry.Where(o => (int?)o.actItem.category == (int)Model.activity.category.Patronize); if (q.f_num.HasValue) diff --git a/web/App_Code/appapi/apporderController.cs b/web/App_Code/appapi/apporderController.cs index 8bc5c88..ed81626 100644 --- a/web/App_Code/appapi/apporderController.cs +++ b/web/App_Code/appapi/apporderController.cs @@ -55,17 +55,17 @@ public class apporderController : ApiController // DELETE api//5 public void Delete(string id) { - var prod = _db.pro_order.AsEnumerable().Where(q => q.order_no == id).FirstOrDefault(); //刪除該筆資料 + var prod = _db.pro_order.Where(q => q.order_no == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { //刪除掛單表單 - var prod3 = _db.bed_order.AsEnumerable().Where(q => q.order_no == id).ToList(); + var prod3 = _db.bed_order.Where(q => q.order_no == id).ToList(); if (prod3.Count > 0) { //刪除掛單明細 foreach (var item3 in prod3) { - var prod4 = _db.bed_order_detail.AsEnumerable().Where(q => q.bed_order_no == item3.bed_order_no).ToList(); + var prod4 = _db.bed_order_detail.Where(q => q.bed_order_no == item3.bed_order_no).ToList(); if (prod4.Count > 0) { _db.bed_order_detail.RemoveRange(prod4); //查詢結果全部刪除 @@ -97,17 +97,17 @@ public class apporderController : ApiController { if (id > 0) { - var prod = _db.pro_order_detail.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 + var prod = _db.pro_order_detail.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { //刪除掛單表單 - var prod3 = _db.bed_order.AsEnumerable().Where(q => q.order_no == prod.order_no).ToList(); + var prod3 = _db.bed_order.Where(q => q.order_no == prod.order_no).ToList(); if (prod3.Count > 0) //count = 1 { //刪除掛單明細 foreach (var item3 in prod3) { - var prod4 = _db.bed_order_detail.AsEnumerable().Where(q => q.bed_order_no == item3.bed_order_no).ToList(); + var prod4 = _db.bed_order_detail.Where(q => q.bed_order_no == item3.bed_order_no).ToList(); if (prod4.Count > 0) { _db.bed_order_detail.RemoveRange(prod4); //查詢結果全部刪除 @@ -132,20 +132,20 @@ public class apporderController : ApiController { var ids = nums.TrimEnd(',').Split(','); - var prod = _db.pro_order.AsEnumerable().Where(q => ids.Contains(q.order_no)).ToList(); + var prod = _db.pro_order.Where(q => ids.Contains(q.order_no)).ToList(); if (prod.Count() > 0) { - var prod2 = _db.pro_order_detail.AsEnumerable().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(); if (prod2.Count > 0) { foreach (var item2 in prod2) { - var prod3 = _db.bed_order.AsEnumerable().Where(q => q.order_no == item2.order_no && q.o_detail_id == item2.num).ToList(); + var prod3 = _db.bed_order.Where(q => q.order_no == item2.order_no && q.o_detail_id == item2.num).ToList(); if (prod3.Count > 0) { foreach (var item3 in prod3) { - var prod4 = _db.bed_order_detail.AsEnumerable().Where(q => q.bed_order_no == item3.bed_order_no).ToList(); + var prod4 = _db.bed_order_detail.Where(q => q.bed_order_no == item3.bed_order_no).ToList(); if (prod4.Count > 0) { _db.bed_order_detail.RemoveRange(prod4); @@ -156,8 +156,8 @@ public class apporderController : ApiController } - //var prod32 = _db.bed_order.AsEnumerable().Where(q => q.order_no == item2.order_no && q.o_detail_id == item2.num).ToList(); - //var prod42 = _db.bed_order_detail.AsEnumerable().Where(q => prod32.Select(qf => qf.order_no).ToArray().Contains(q.bed_order_no)).ToList(); + //var prod32 = _db.bed_order.Where(q => q.order_no == item2.order_no && q.o_detail_id == item2.num).ToList(); + //var prod42 = _db.bed_order_detail.Where(q => prod32.Select(qf => qf.order_no).ToArray().Contains(q.bed_order_no)).ToList(); //_db.bed_order_detail.RemoveRange(prod42); //_db.bed_order.RemoveRange(prod32); @@ -199,8 +199,8 @@ public class apporderController : ApiController string sortBy = "", bool sortDesc = false) { - var qry = _db.pro_order.AsEnumerable(); - //var aIDt = _db.actItems.AsEnumerable().Where(f => f.subject.Contains(q.actItemTxt.Trim())).Select(f => f.num);//品項 + var qry = _db.pro_order.AsQueryable(); + //var aIDt = _db.actItems.Where(f => f.subject.Contains(q.actItemTxt.Trim())).Select(f => f.num);//品項 if (!string.IsNullOrEmpty(q.order_no)) @@ -317,11 +317,11 @@ public class apporderController : ApiController if (!string.IsNullOrEmpty( order_no )) { //檢查 - var prod = _db.pro_order.AsEnumerable().Where(o => o.order_no == order_no).FirstOrDefault(); + var prod = _db.pro_order.Where(o => o.order_no == order_no).FirstOrDefault(); if (prod != null) { int activity = prod.activity_num.HasValue ? prod.activity_num.Value : 0; //活動 - var bedDt = _db.bed_order_detail.AsEnumerable().Where(b=>b.bed_order.order_no== order_no ); ;//掛單明細 + var bedDt = _db.bed_order_detail.Where(b=>b.bed_order.order_no== order_no ); ;//掛單明細 //var qry1 = _db.pro_order_detail.AsEnumerable(); @@ -435,7 +435,7 @@ public class apporderController : ApiController if (activity > 0) { i = 1; - var qry2 = _db.activity_relating.AsEnumerable(); + var qry2 = _db.activity_relating.AsQueryable(); qry2 = qry2.Where(o => o.activity_num == activity); if (q.actItem_kind_num.HasValue) @@ -690,14 +690,14 @@ public class apporderController : ApiController //家族 : 家長是我的人,跟我同家長的人,我的家長本人,我本人 var cc = _db.followers.Where(x => x.num == _follower || x.leader == _follower).Select(x => x.num); - var qry = _db.followers.AsEnumerable().Where(f => cc.Any(x => x == f.num) || cc.Any(x => x == f.leader)); + var qry = _db.followers.Where(f => cc.Any(x => x == f.num) || cc.Any(x => x == f.leader)); //未付款資料 - var unpayDt = _db.pro_order_detail.AsEnumerable(); + var unpayDt = _db.pro_order_detail.AsQueryable(); var coDt = unpayDt.Where(x => x.keyin1 == (int)Model.pro_order.detailKeyin1.Collection);//只列出報名狀態為"收款中"的項目 //未付款訂單 - var orderDt = _db.pro_order.AsEnumerable(); + var orderDt = _db.pro_order.AsQueryable(); if (!string.IsNullOrEmpty(order_no)) orderDt = orderDt.Where(x => x.order_no == order_no); orderDt = orderDt.Where(x => coDt.Select(d => d.order_no).Contains(x.order_no)); @@ -737,7 +737,7 @@ public class apporderController : ApiController { //未付款資料 - var unpayDt = _db.pro_order_detail.AsEnumerable(); + var unpayDt = _db.pro_order_detail.AsQueryable(); unpayDt = unpayDt.Where(x => x.keyin1 == (int)Model.pro_order.detailKeyin1.Collection);//只列出報名狀態為"收款中"的項目 if (!string.IsNullOrEmpty(q.order_no)) @@ -865,10 +865,10 @@ public class apporderController : ApiController if (u_name >0 && (!string.IsNullOrEmpty(q.order_no))) { //檢查 - var prod = _db.pro_order.AsEnumerable().Where(o => o.f_num == u_name && o.order_no != q.order_no).ToList(); + var prod = _db.pro_order.Where(o => o.f_num == u_name && o.order_no != q.order_no).ToList(); if (prod.Count > 0) { - var qry = _db.pro_order_detail.AsEnumerable().Where(o => prod.Any(x => x.order_no==o.order_no) ); + var qry = _db.pro_order_detail.Where(o => prod.Any(x => x.order_no==o.order_no) ); int i = 1; var ret = new { @@ -942,7 +942,7 @@ public class apporderController : ApiController if (detail_num > 0 ) { //檢查 - var prod = _db.pro_order_record.AsEnumerable().Where(o => o.detail_num == detail_num ) + var prod = _db.pro_order_record.Where(o => o.detail_num == detail_num ) .OrderByDescending(o=>o.pay_date).ToList(); int i = 1; var ret = new @@ -979,7 +979,7 @@ public class apporderController : ApiController [Route("api/apporder/DeleteRecordDetail/{id}")]//刪除收款註記 public void DeleteRecordDetail(int id) { - var prod = _db.pro_order_record.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 + var prod = _db.pro_order_record.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { @@ -995,8 +995,8 @@ public class apporderController : ApiController { if (item.detail_num > 0) { - float total = _db.pro_order_detail.AsEnumerable().Where(x => x.num == item.detail_num).Select(x => x.price.Value * x.qty.Value).Sum(); - float pay = _db.pro_order_record.AsEnumerable().Where(x => x.detail_num == item.detail_num).Select(x => x.price.Value).Sum(); + float total = _db.pro_order_detail.Where(x => x.num == item.detail_num).Select(x => x.price.Value * x.qty.Value).Sum(); + float pay = _db.pro_order_record.Where(x => x.detail_num == item.detail_num).Select(x => x.price.Value).Sum(); if (pay + item.price.Value <= total) { diff --git a/web/admin/HR/kind_reg.aspx.cs b/web/admin/HR/kind_reg.aspx.cs index 4b7ccc1..05ab956 100644 --- a/web/admin/HR/kind_reg.aspx.cs +++ b/web/admin/HR/kind_reg.aspx.cs @@ -27,7 +27,6 @@ public partial class admin_hr_kind_reg : MyWeb.config if (!isStrNull(Request["num"])) { int _num = Val(Request["num"]); - var qry = _db.member_group.AsEnumerable(); var prod = _db.member_group.Where(q => q.num == _num).OrderBy(q => q.kind).FirstOrDefault(); if (prod != null) { @@ -70,7 +69,6 @@ public partial class admin_hr_kind_reg : MyWeb.config protected void TreeTopology() { - var qry = _db.member_group.AsEnumerable(); var prod = _db.member_group.ToList(); //treeDt = prod.CopyToDataTable(); @@ -235,7 +233,7 @@ public partial class admin_hr_kind_reg : MyWeb.config try { - var prod = _db.member_group.AsEnumerable().Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); + var prod = _db.member_group.Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); if (prod != null) if (prod.range.HasValue) range = prod.range.Value + 1; @@ -281,7 +279,7 @@ public partial class admin_hr_kind_reg : MyWeb.config del_product(num); - var prod = _db.member_group.AsEnumerable().Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 + var prod = _db.member_group.Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.member_group.Remove(prod); @@ -302,7 +300,7 @@ public partial class admin_hr_kind_reg : MyWeb.config public void Del_Ohter_Items(int d_num) { - var prod = _db.member_group.AsEnumerable().Where(q => q.root == d_num).ToList(); + var prod = _db.member_group.Where(q => q.root == d_num).ToList(); if (prod.Count > 0) { foreach (var row in prod) @@ -319,7 +317,7 @@ public partial class admin_hr_kind_reg : MyWeb.config } public void del_product(int num) { - var prod = _db.members.AsEnumerable().Where(q => q.group_kind == num).ToList(); + var prod = _db.members.Where(q => q.group_kind == num).ToList(); if (prod.Count > 0) { //清空組別分類 diff --git a/web/admin/HR/title_reg.aspx.cs b/web/admin/HR/title_reg.aspx.cs index 4a652c0..3bcc09f 100644 --- a/web/admin/HR/title_reg.aspx.cs +++ b/web/admin/HR/title_reg.aspx.cs @@ -22,7 +22,6 @@ public partial class admin_hr_kind_reg : MyWeb.config if (!isStrNull(Request["num"])) { int _num = Val(Request["num"]); - var qry = _db.member_title.AsEnumerable(); var prod = _db.member_title.Where(q => q.num == _num).OrderBy(q => q.kind).FirstOrDefault(); if (prod != null) { @@ -207,7 +206,7 @@ public partial class admin_hr_kind_reg : MyWeb.config } try { - var prod = _db.member_title.AsEnumerable().Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); + var prod = _db.member_title.Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); if (prod != null) if (prod.range.HasValue) range = prod.range.Value + 1; @@ -248,7 +247,7 @@ public partial class admin_hr_kind_reg : MyWeb.config int num = Val(Request["num"]); del_product(num); - var prod = _db.member_title.AsEnumerable().Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 + var prod = _db.member_title.Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.member_title.Remove(prod); @@ -269,7 +268,7 @@ public partial class admin_hr_kind_reg : MyWeb.config public void Del_Ohter_Items(int d_num) { - var prod = _db.member_title.AsEnumerable().Where(q => q.root == d_num).ToList(); + var prod = _db.member_title.Where(q => q.root == d_num).ToList(); if (prod.Count > 0) { foreach (var row in prod) @@ -286,7 +285,7 @@ public partial class admin_hr_kind_reg : MyWeb.config public void del_product(int num) { - var prod = _db.members.AsEnumerable().Where(q => q.title_kind == num).ToList(); + var prod = _db.members.Where(q => q.title_kind == num).ToList(); if (prod.Count > 0) { //清空分類 diff --git a/web/admin/accounting/kind_reg.aspx.cs b/web/admin/accounting/kind_reg.aspx.cs index 7338136..4d90242 100644 --- a/web/admin/accounting/kind_reg.aspx.cs +++ b/web/admin/accounting/kind_reg.aspx.cs @@ -21,7 +21,7 @@ public partial class admin_accounting_kind_reg : MyWeb.config if (!isStrNull(Request["num"])) { int _num = Val(Request["num"]); - var prod = _db.accounting_kind.AsEnumerable().Where(q => q.num == _num).OrderBy(q => q.kind).FirstOrDefault(); + var prod = _db.accounting_kind.Where(q => q.num == _num).OrderBy(q => q.kind).FirstOrDefault(); if (prod != null) { @@ -215,7 +215,7 @@ public partial class admin_accounting_kind_reg : MyWeb.config try { - var prod = _db.accounting_kind.AsEnumerable().Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); + var prod = _db.accounting_kind.Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); if (prod != null) if (prod.range.HasValue) range = prod.range.Value + 1; @@ -254,7 +254,7 @@ public partial class admin_accounting_kind_reg : MyWeb.config int num = Val(Request["num"]); del_product(num); - var prod = _db.accounting_kind.AsEnumerable().Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 + var prod = _db.accounting_kind.Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.accounting_kind.Remove(prod); @@ -272,7 +272,7 @@ public partial class admin_accounting_kind_reg : MyWeb.config public void Del_Ohter_Items(int d_num) { - var prod = _db.accounting_kind.AsEnumerable().Where(q => q.root == d_num).ToList(); + var prod = _db.accounting_kind.Where(q => q.root == d_num).ToList(); if (prod.Count > 0) { foreach (var row in prod) @@ -291,7 +291,7 @@ public partial class admin_accounting_kind_reg : MyWeb.config public void del_product(int num) { - var prod = _db.accountings.AsEnumerable().Where(q => q.kind == num).ToList(); + var prod = _db.accountings.Where(q => q.kind == num).ToList(); if (prod.Count > 0) { ////查詢結果全部刪除 diff --git a/web/admin/accounting/kind_reg2.aspx.cs b/web/admin/accounting/kind_reg2.aspx.cs index 44c3c57..d3911d9 100644 --- a/web/admin/accounting/kind_reg2.aspx.cs +++ b/web/admin/accounting/kind_reg2.aspx.cs @@ -21,7 +21,7 @@ public partial class admin_accounting_kind_reg2 : MyWeb.config if (!isStrNull(Request["num"])) { int _num = Val(Request["num"]); - var prod = _db.accounting_kind2.AsEnumerable().Where(q => q.num == _num).FirstOrDefault(); + var prod = _db.accounting_kind2.Where(q => q.num == _num).FirstOrDefault(); if (prod != null) { @@ -228,7 +228,7 @@ public partial class admin_accounting_kind_reg2 : MyWeb.config try { - var prod = _db.accounting_kind2.AsEnumerable().Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); + var prod = _db.accounting_kind2.Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); if (prod != null) if (prod.range.HasValue) range = prod.range.Value + 1; @@ -271,7 +271,7 @@ public partial class admin_accounting_kind_reg2 : MyWeb.config int num = Val(Request["num"]); del_product(num); - var prod = _db.accounting_kind2.AsEnumerable().Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 + var prod = _db.accounting_kind2.Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.accounting_kind2.Remove(prod); @@ -288,7 +288,7 @@ public partial class admin_accounting_kind_reg2 : MyWeb.config public void Del_Ohter_Items(int d_num) { - var prod = _db.accounting_kind2.AsEnumerable().Where(q => q.root == d_num).ToList(); + var prod = _db.accounting_kind2.Where(q => q.root == d_num).ToList(); if (prod.Count > 0) { foreach (var row in prod) @@ -306,7 +306,7 @@ public partial class admin_accounting_kind_reg2 : MyWeb.config public void del_product(int num) { - var prod = _db.accountings.AsEnumerable().Where(q => q.kind2 == num).ToList(); + var prod = _db.accountings.Where(q => q.kind2 == num).ToList(); if (prod.Count > 0) { ////查詢結果全部刪除 diff --git a/web/admin/activity/kind_reg.aspx.cs b/web/admin/activity/kind_reg.aspx.cs index debf685..dc79191 100644 --- a/web/admin/activity/kind_reg.aspx.cs +++ b/web/admin/activity/kind_reg.aspx.cs @@ -24,7 +24,7 @@ public partial class admin_activity_kind_reg : MyWeb.config { _this_id = ValString(Request["num"]); int _num = Val(Request["num"]); - var prod = _db.activity_kind.AsEnumerable().Where(q => q.num == _num).OrderBy(q=>q.kind).FirstOrDefault(); + var prod = _db.activity_kind.Where(q => q.num == _num).OrderBy(q=>q.kind).FirstOrDefault(); if (prod != null) { @@ -230,7 +230,7 @@ public partial class admin_activity_kind_reg : MyWeb.config try { - var prod = _db.activity_kind.AsEnumerable().Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); + var prod = _db.activity_kind.Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); if (prod != null) if (prod.range.HasValue) range = prod.range.Value + 1; @@ -284,7 +284,7 @@ public partial class admin_activity_kind_reg : MyWeb.config { int num = Val(Request["num"]); del_product(num); - var prod = _db.activity_kind.AsEnumerable().Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 + var prod = _db.activity_kind.Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.activity_kind.Remove(prod); @@ -301,7 +301,7 @@ public partial class admin_activity_kind_reg : MyWeb.config public void Del_Ohter_Items(int d_num) { - var prod = _db.activity_kind.AsEnumerable().Where(q => q.root == d_num).ToList(); + var prod = _db.activity_kind.Where(q => q.root == d_num).ToList(); if (prod.Count > 0) { foreach (var row in prod) @@ -317,7 +317,7 @@ public partial class admin_activity_kind_reg : MyWeb.config } public void del_product(int num) { - var prod = _db.activities.AsEnumerable().Where(q => q.kind == num).ToList(); + var prod = _db.activities.Where(q => q.kind == num).ToList(); if (prod.Count > 0) { //清空分類 diff --git a/web/admin/activity/kind_reg2.aspx.cs b/web/admin/activity/kind_reg2.aspx.cs index 4481340..4965d9c 100644 --- a/web/admin/activity/kind_reg2.aspx.cs +++ b/web/admin/activity/kind_reg2.aspx.cs @@ -21,7 +21,7 @@ public partial class admin_activity_kind_reg2 : MyWeb.config if (!isStrNull(Request["num"])) { int _num = Val(Request["num"]); - var prod = _db.activity_category_kind.AsEnumerable().Where(q => q.num == _num).Where(q => q.num == _num).FirstOrDefault(); + var prod = _db.activity_category_kind.Where(q => q.num == _num).FirstOrDefault(); if (prod != null) { @@ -208,7 +208,7 @@ public partial class admin_activity_kind_reg2 : MyWeb.config try { - var prod = _db.activity_category_kind.AsEnumerable().Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); + var prod = _db.activity_category_kind.Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); if (prod != null) if (prod.range.HasValue) range = prod.range.Value + 1; @@ -247,7 +247,7 @@ public partial class admin_activity_kind_reg2 : MyWeb.config del_product(num); - var prod = _db.activity_category_kind.AsEnumerable().Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 + var prod = _db.activity_category_kind.Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.activity_category_kind.Remove(prod); @@ -265,7 +265,7 @@ public partial class admin_activity_kind_reg2 : MyWeb.config public void Del_Ohter_Items(int d_num) { - var prod = _db.activity_category_kind.AsEnumerable().Where(q => q.root == d_num).ToList(); + var prod = _db.activity_category_kind.Where(q => q.root == d_num).ToList(); if (prod.Count > 0) { foreach (var row in prod) @@ -284,7 +284,7 @@ public partial class admin_activity_kind_reg2 : MyWeb.config public void del_product(int num) //刪除訊息 { //EF Model 資料庫拉關聯 , 故刪除類型前,一定要先刪除訊息,否則關聯會出錯 - var prod = _db.activities.AsEnumerable().Where(q => q.category_kind == num).ToList(); + var prod = _db.activities.Where(q => q.category_kind == num).ToList(); if (prod.Count > 0) { diff --git a/web/admin/bed/kind_reg.aspx.cs b/web/admin/bed/kind_reg.aspx.cs index 04cfc8c..f0f4172 100644 --- a/web/admin/bed/kind_reg.aspx.cs +++ b/web/admin/bed/kind_reg.aspx.cs @@ -30,7 +30,7 @@ public partial class admin_bed_kind_reg : MyWeb.config { _this_id = ValString(Request["num"]); int _num = Val(Request["num"]); - var prod = _db.bed_kind.AsEnumerable().Where(q => q.num == _num).FirstOrDefault(); + var prod = _db.bed_kind.Where(q => q.num == _num).FirstOrDefault(); if (prod != null) { @@ -250,7 +250,7 @@ public partial class admin_bed_kind_reg : MyWeb.config try { - var prod = _db.bed_kind.AsEnumerable().Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); + var prod = _db.bed_kind.Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); if (prod != null) if (prod.range.HasValue) range = prod.range.Value + 1; @@ -293,7 +293,7 @@ public partial class admin_bed_kind_reg : MyWeb.config { int num = Val(Request["num"]); del_product(num); - var prod = _db.bed_kind.AsEnumerable().Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 + var prod = _db.bed_kind.Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.bed_kind.Remove(prod); @@ -310,7 +310,7 @@ public partial class admin_bed_kind_reg : MyWeb.config public void Del_Ohter_Items(int d_num) { - var prod = _db.bed_kind.AsEnumerable().Where(q => q.root == d_num).ToList(); + var prod = _db.bed_kind.Where(q => q.root == d_num).ToList(); if (prod.Count > 0) { foreach (var row in prod) @@ -327,14 +327,14 @@ public partial class admin_bed_kind_reg : MyWeb.config public void del_product(int num) { //床位資料 - var prod = _db.bed_kind_detail.AsEnumerable().Where(q => q.bed_kind_id == num).ToList(); + var prod = _db.bed_kind_detail.Where(q => q.bed_kind_id == num).ToList(); if (prod.Count > 0) { //清空分類 foreach (var item in prod) { //掛單資料 - var prod2 = _db.bed_order_detail.AsEnumerable().Where(q => q.bed_kind_detail_id == item.num).ToList(); + var prod2 = _db.bed_order_detail.Where(q => q.bed_kind_detail_id == item.num).ToList(); if (prod2.Count > 0) { //清空分類 @@ -349,7 +349,7 @@ public partial class admin_bed_kind_reg : MyWeb.config } //掛單資料 - var prod3 = _db.bed_order_detail.AsEnumerable().Where(q => q.bed_kind1 == num || q.bed_kind2 == num).ToList(); + var prod3 = _db.bed_order_detail.Where(q => q.bed_kind1 == num || q.bed_kind2 == num).ToList(); if (prod3.Count > 0) { //清空分類 diff --git a/web/admin/news/kind_reg.aspx.cs b/web/admin/news/kind_reg.aspx.cs index adbaef4..7dade3f 100644 --- a/web/admin/news/kind_reg.aspx.cs +++ b/web/admin/news/kind_reg.aspx.cs @@ -21,7 +21,7 @@ public partial class admin_news_kind_reg : MyWeb.config if (!isStrNull(Request["num"])) { int _num = Val(Request["num"]); - var prod = _db.news_kind.AsEnumerable().Where(q => q.num == _num).OrderBy(q=>q.kind).FirstOrDefault(); + var prod = _db.news_kind.Where(q => q.num == _num).OrderBy(q=>q.kind).FirstOrDefault(); if (prod != null) { @@ -214,7 +214,7 @@ public partial class admin_news_kind_reg : MyWeb.config try { - var prod = _db.news_kind.AsEnumerable().Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); + var prod = _db.news_kind.Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); if (prod != null) if (prod.range.HasValue) range = prod.range.Value + 1; @@ -255,7 +255,7 @@ public partial class admin_news_kind_reg : MyWeb.config del_product(num); - var prod = _db.news_kind.AsEnumerable().Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 + var prod = _db.news_kind.Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.news_kind.Remove(prod); @@ -273,7 +273,7 @@ public partial class admin_news_kind_reg : MyWeb.config public void Del_Ohter_Items(int d_num) { - var prod = _db.news_kind.AsEnumerable().Where(q => q.root == d_num).ToList(); + var prod = _db.news_kind.Where(q => q.root == d_num).ToList(); if (prod.Count > 0) { foreach (var row in prod) @@ -292,7 +292,7 @@ public partial class admin_news_kind_reg : MyWeb.config public void del_product(int num) //刪除訊息 { //EF Model 資料庫拉關聯 , 故刪除分類前,一定要先刪除訊息,否則關聯會出錯 - var prod = _db.news.AsEnumerable().Where(q => q.kind == num).ToList(); + var prod = _db.news.Where(q => q.kind == num).ToList(); if (prod.Count > 0) { ////刪除檔案 diff --git a/web/admin/project/kind_reg.aspx.cs b/web/admin/project/kind_reg.aspx.cs index c614300..3c55310 100644 --- a/web/admin/project/kind_reg.aspx.cs +++ b/web/admin/project/kind_reg.aspx.cs @@ -21,7 +21,7 @@ public partial class admin_project_kind_reg : MyWeb.config if (!isStrNull(Request["num"])) { int _num = Val(Request["num"]); - var prod = _db.project_kind.AsEnumerable().Where(q => q.num == _num).OrderBy(q => q.kind).FirstOrDefault(); + var prod = _db.project_kind.Where(q => q.num == _num).OrderBy(q => q.kind).FirstOrDefault(); if (prod != null) { @@ -210,7 +210,7 @@ public partial class admin_project_kind_reg : MyWeb.config try { - var prod = _db.project_kind.AsEnumerable().Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); + var prod = _db.project_kind.Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); if (prod != null) if (prod.range.HasValue) range = prod.range.Value + 1; @@ -248,7 +248,7 @@ public partial class admin_project_kind_reg : MyWeb.config int num = Val(Request["num"]); del_product(num); - var prod = _db.project_kind.AsEnumerable().Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 + var prod = _db.project_kind.Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.project_kind.Remove(prod); @@ -265,7 +265,7 @@ public partial class admin_project_kind_reg : MyWeb.config public void Del_Ohter_Items(int d_num) { - var prod = _db.project_kind.AsEnumerable().Where(q => q.root == d_num).ToList(); + var prod = _db.project_kind.Where(q => q.root == d_num).ToList(); if (prod.Count > 0) { foreach (var row in prod) @@ -283,7 +283,7 @@ public partial class admin_project_kind_reg : MyWeb.config public void del_product(int num) { - var prod = _db.projects.AsEnumerable().Where(q => q.kind == num).ToList(); + var prod = _db.projects.Where(q => q.kind == num).ToList(); if (prod.Count > 0) { ////查詢結果全部刪除 diff --git a/web/admin/stock/kind_reg.aspx.cs b/web/admin/stock/kind_reg.aspx.cs index 520202a..c6e94da 100644 --- a/web/admin/stock/kind_reg.aspx.cs +++ b/web/admin/stock/kind_reg.aspx.cs @@ -21,7 +21,7 @@ public partial class admin_stock_kind_reg : MyWeb.config if (!isStrNull(Request["num"])) { int _num = Val(Request["num"]); - var prod = _db.stock_kind.AsEnumerable().Where(q => q.num == _num).OrderBy(q => q.kind).FirstOrDefault(); + var prod = _db.stock_kind.Where(q => q.num == _num).OrderBy(q => q.kind).FirstOrDefault(); if (prod != null) { @@ -210,7 +210,7 @@ public partial class admin_stock_kind_reg : MyWeb.config try { - var prod = _db.stock_kind.AsEnumerable().Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); + var prod = _db.stock_kind.Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); if (prod != null) if (prod.range.HasValue) range = prod.range.Value + 1; @@ -248,7 +248,7 @@ public partial class admin_stock_kind_reg : MyWeb.config int num = Val(Request["num"]); del_product(num); - var prod = _db.stock_kind.AsEnumerable().Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 + var prod = _db.stock_kind.Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.stock_kind.Remove(prod); @@ -266,7 +266,7 @@ public partial class admin_stock_kind_reg : MyWeb.config public void Del_Ohter_Items(int d_num) { - var prod = _db.stock_kind.AsEnumerable().Where(q => q.root == d_num).ToList(); + var prod = _db.stock_kind.Where(q => q.root == d_num).ToList(); if (prod.Count > 0) { foreach (var row in prod) @@ -285,7 +285,7 @@ public partial class admin_stock_kind_reg : MyWeb.config public void del_product(int num) { - var prod = _db.stocks.AsEnumerable().Where(q => q.kind == num).ToList(); + var prod = _db.stocks.Where(q => q.kind == num).ToList(); if (prod.Count > 0) { ////查詢結果全部刪除 diff --git a/web/admin/supplier/kind_reg.aspx.cs b/web/admin/supplier/kind_reg.aspx.cs index b47f3a7..9fa0967 100644 --- a/web/admin/supplier/kind_reg.aspx.cs +++ b/web/admin/supplier/kind_reg.aspx.cs @@ -21,7 +21,7 @@ public partial class admin_supplier_kind_reg : MyWeb.config if (!isStrNull(Request["num"])) { int _num = Val(Request["num"]); - var prod = _db.supplier_kind.AsEnumerable().Where(q => q.num == _num).OrderBy(q => q.kind).FirstOrDefault(); + var prod = _db.supplier_kind.Where(q => q.num == _num).OrderBy(q => q.kind).FirstOrDefault(); if (prod != null) { @@ -210,7 +210,7 @@ public partial class admin_supplier_kind_reg : MyWeb.config try { - var prod = _db.supplier_kind.AsEnumerable().Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); + var prod = _db.supplier_kind.Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); if (prod != null) if (prod.range.HasValue) range = prod.range.Value + 1; @@ -248,7 +248,7 @@ public partial class admin_supplier_kind_reg : MyWeb.config int num = Val(Request["num"]); //del_product(num); - var prod = _db.supplier_kind.AsEnumerable().Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 + var prod = _db.supplier_kind.Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.supplier_kind.Remove(prod); @@ -266,7 +266,7 @@ public partial class admin_supplier_kind_reg : MyWeb.config public void Del_Ohter_Items(int d_num) { - var prod = _db.supplier_kind.AsEnumerable().Where(q => q.root == d_num).ToList(); + var prod = _db.supplier_kind.Where(q => q.root == d_num).ToList(); if (prod.Count > 0) { foreach (var row in prod) @@ -285,7 +285,7 @@ public partial class admin_supplier_kind_reg : MyWeb.config public void del_product(int num) { - var prod = _db.suppliers.AsEnumerable().Where(q => q.kind == num).ToList(); + var prod = _db.suppliers.Where(q => q.kind == num).ToList(); if (prod.Count > 0) { ////查詢結果全部刪除 diff --git a/web/test_asenumerable_check.aspx b/web/test_asenumerable_check.aspx new file mode 100644 index 0000000..73ebed7 --- /dev/null +++ b/web/test_asenumerable_check.aspx @@ -0,0 +1,28 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test_asenumerable_check.aspx.cs" Inherits="test_asenumerable_check" %> + + + + AsEnumerable 修改檢測工具 + + + +

🔍 AsEnumerable 修改檢測報告

+
+ +
+ + + + + diff --git a/web/test_asenumerable_check.aspx.cs b/web/test_asenumerable_check.aspx.cs new file mode 100644 index 0000000..de72b47 --- /dev/null +++ b/web/test_asenumerable_check.aspx.cs @@ -0,0 +1,346 @@ +using System; +using System.Text; +using System.Diagnostics; +using System.Linq; +using Model; + +public partial class test_asenumerable_check : System.Web.UI.Page +{ + private StringBuilder output = new StringBuilder(); + private int passCount = 0; + private int failCount = 0; + private int warnCount = 0; + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + litResult.Text = "

點擊「執行檢測」開始測試修改結果

"; + } + } + + protected void btnRunTest_Click(object sender, EventArgs e) + { + output.Clear(); + passCount = 0; + failCount = 0; + warnCount = 0; + + output.AppendLine("
"); + output.AppendLine($"

測試時間: {DateTime.Now:yyyy-MM-dd HH:mm:ss}

"); + output.AppendLine("
"); + + // 執行所有測試 + TestAccountingKind(); + TestActivityKind(); + TestFollowers(); + TestMembers(); + TestOrders(); + + // 顯示總結 + output.AppendLine("
"); + output.AppendLine("

📊 測試總結

"); + output.AppendLine($"

✅ 通過: {passCount} 項

"); + output.AppendLine($"

❌ 失敗: {failCount} 項

"); + output.AppendLine($"

⚠️ 警告: {warnCount} 項

"); + + if (failCount == 0) + { + output.AppendLine("

🎉 所有測試通過!修改成功!

"); + } + else + { + output.AppendLine("

⚠️ 發現問題,請檢查失敗的項目

"); + } + + litResult.Text = output.ToString(); + } + + private void TestAccountingKind() + { + output.AppendLine("

測試 1: accounting_kind 查詢優化

"); + + using (var db = new ezEntities()) + { + var sqlLog = new StringBuilder(); + db.Database.Log = sql => sqlLog.AppendLine(sql); + + try + { + // 測試 1.1: 單筆查詢 + sqlLog.Clear(); + var sw = Stopwatch.StartNew(); + var result = db.accounting_kind.Where(q => q.num == 1).FirstOrDefault(); + sw.Stop(); + + CheckQuery("單筆查詢 (Where + FirstOrDefault)", + sqlLog.ToString(), + sw.ElapsedMilliseconds, + shouldHaveWhere: true, + shouldHaveSelectAll: false, + maxTime: 50); + + // 測試 1.2: 檢查子資料 (應該用 Any) + sqlLog.Clear(); + sw.Restart(); + var hasChildren = db.accounting_kind.Any(q => q.root == 1); + sw.Stop(); + + CheckQuery("檢查子資料存在 (Any)", + sqlLog.ToString(), + sw.ElapsedMilliseconds, + shouldHaveWhere: true, + shouldHaveExists: true, + maxTime: 30); + + // 測試 1.3: 取得子資料清單 + sqlLog.Clear(); + sw.Restart(); + var children = db.accounting_kind.Where(q => q.root == 1).ToList(); + sw.Stop(); + + CheckQuery("取得子資料清單 (Where + ToList)", + sqlLog.ToString(), + sw.ElapsedMilliseconds, + shouldHaveWhere: true, + shouldHaveSelectAll: false, + maxTime: 100); + } + catch (Exception ex) + { + LogError($"accounting_kind 測試失敗: {ex.Message}"); + } + } + } + + private void TestActivityKind() + { + output.AppendLine("

測試 2: activity_kind 查詢優化

"); + + using (var db = new ezEntities()) + { + var sqlLog = new StringBuilder(); + db.Database.Log = sql => sqlLog.AppendLine(sql); + + try + { + // 單筆查詢 + 排序 + sqlLog.Clear(); + var sw = Stopwatch.StartNew(); + var result = db.activity_kind + .Where(q => q.num == 1) + .OrderBy(q => q.kind) + .FirstOrDefault(); + sw.Stop(); + + CheckQuery("單筆查詢 + 排序 (Where + OrderBy + FirstOrDefault)", + sqlLog.ToString(), + sw.ElapsedMilliseconds, + shouldHaveWhere: true, + shouldHaveOrderBy: true, + maxTime: 50); + } + catch (Exception ex) + { + LogError($"activity_kind 測試失敗: {ex.Message}"); + } + } + } + + private void TestFollowers() + { + output.AppendLine("

測試 3: followers 查詢優化

"); + + using (var db = new ezEntities()) + { + var sqlLog = new StringBuilder(); + db.Database.Log = sql => sqlLog.AppendLine(sql); + + try + { + // 測試字串查詢 (Contains) + sqlLog.Clear(); + var sw = Stopwatch.StartNew(); + var result = db.followers + .Where(q => q.f_number.Contains("A")) + .Take(10) + .ToList(); + sw.Stop(); + + CheckQuery("字串查詢 (Contains)", + sqlLog.ToString(), + sw.ElapsedMilliseconds, + shouldHaveWhere: true, + shouldHaveLike: true, + maxTime: 100); + } + catch (Exception ex) + { + LogError($"followers 測試失敗: {ex.Message}"); + } + } + } + + private void TestMembers() + { + output.AppendLine("

測試 4: members 查詢優化

"); + + using (var db = new ezEntities()) + { + var sqlLog = new StringBuilder(); + db.Database.Log = sql => sqlLog.AppendLine(sql); + + try + { + // 測試批次查詢 + var ids = new[] { 1, 2, 3 }; + sqlLog.Clear(); + var sw = Stopwatch.StartNew(); + var result = db.members.Where(q => ids.Contains(q.num)).ToList(); + sw.Stop(); + + CheckQuery("批次 ID 查詢 (Contains)", + sqlLog.ToString(), + sw.ElapsedMilliseconds, + shouldHaveWhere: true, + shouldHaveIn: true, + maxTime: 100); + } + catch (Exception ex) + { + LogError($"members 測試失敗: {ex.Message}"); + } + } + } + + private void TestOrders() + { + output.AppendLine("

測試 5: pro_order_detail 聚合查詢

"); + + using (var db = new ezEntities()) + { + var sqlLog = new StringBuilder(); + db.Database.Log = sql => sqlLog.AppendLine(sql); + + try + { + // 測試 Count + sqlLog.Clear(); + var sw = Stopwatch.StartNew(); + var count = db.pro_order_detail.Count(q => q.num > 0); + sw.Stop(); + + CheckQuery("Count 查詢", + sqlLog.ToString(), + sw.ElapsedMilliseconds, + shouldHaveWhere: true, + shouldHaveCount: true, + maxTime: 50); + } + catch (Exception ex) + { + LogError($"pro_order_detail 測試失敗: {ex.Message}"); + } + } + } + + private void CheckQuery(string testName, string sql, long milliseconds, + bool shouldHaveWhere = false, + bool shouldHaveSelectAll = false, + bool shouldHaveExists = false, + bool shouldHaveOrderBy = false, + bool shouldHaveLike = false, + bool shouldHaveIn = false, + bool shouldHaveCount = false, + long maxTime = 100) + { + output.AppendLine("
"); + output.AppendLine($"

🔸 {testName}

"); + output.AppendLine($"

執行時間: {milliseconds}ms

"); + + bool passed = true; + var issues = new StringBuilder(); + + // 檢查是否有 WHERE 條件 + if (shouldHaveWhere && !sql.Contains("WHERE")) + { + issues.AppendLine("❌ 缺少 WHERE 條件(可能載入整表)
"); + passed = false; + } + + // 檢查是否有不當的 SELECT * + if (!shouldHaveSelectAll && sql.Contains("SELECT") && !sql.Contains("WHERE") && !sql.Contains("TOP")) + { + issues.AppendLine("❌ SELECT 沒有條件限制(載入整表)
"); + passed = false; + } + + // 檢查是否使用 EXISTS(Any 應該產生) + if (shouldHaveExists && !sql.Contains("EXISTS")) + { + issues.AppendLine("⚠️ 建議使用 EXISTS 而非載入資料
"); + warnCount++; + } + + // 檢查是否有 ORDER BY + if (shouldHaveOrderBy && !sql.Contains("ORDER BY")) + { + issues.AppendLine("❌ 缺少 ORDER BY(排序應該在資料庫執行)
"); + passed = false; + } + + // 檢查是否有 LIKE(Contains 應該產生) + if (shouldHaveLike && !sql.Contains("LIKE")) + { + issues.AppendLine("❌ 字串查詢未轉為 LIKE
"); + passed = false; + } + + // 檢查是否有 IN(批次查詢應該產生) + if (shouldHaveIn && !sql.Contains("IN")) + { + issues.AppendLine("❌ 批次查詢未轉為 IN
"); + passed = false; + } + + // 檢查是否有 COUNT(聚合函數應該在資料庫執行) + if (shouldHaveCount && !sql.Contains("COUNT")) + { + issues.AppendLine("❌ COUNT 未在資料庫執行
"); + passed = false; + } + + // 檢查執行時間 + if (milliseconds > maxTime) + { + issues.AppendLine($"⚠️ 執行時間較長 (>{maxTime}ms),可能仍有優化空間
"); + warnCount++; + } + + if (passed) + { + output.AppendLine("

✅ 測試通過

"); + passCount++; + } + else + { + output.AppendLine("

❌ 測試失敗

"); + output.AppendLine($"
{issues}
"); + failCount++; + } + + // 顯示 SQL + output.AppendLine("
"); + output.AppendLine("產生的 SQL:
"); + output.AppendLine($"
{System.Web.HttpUtility.HtmlEncode(sql)}
"); + output.AppendLine("
"); + output.AppendLine("
"); + } + + private void LogError(string message) + { + output.AppendLine($"

❌ {message}

"); + failCount++; + } +} +