完成 Batch 2:修復 4 個 API Controller 的 AsEnumerable 問題
修復文件(共 21 處): 1. newsController.cs (7 處) - 移除簡單查詢的 AsEnumerable() - AsEnumerable() → AsQueryable() (GetList, GetKindList) - 優化分頁查詢模式(Count + ToPagedList.ToList()) - 修復 Split().Select().ToList() 類型問題 2. FilesSetController.cs (5 處) - 移除簡單查詢的 AsEnumerable() - AsEnumerable() → AsQueryable() (GetList) - 優化分頁查詢模式 - 修復 files_num nullable 字段處理 - 修復 Split().Select().ToList() 類型問題 3. bedController.cs (5 處) - 移除簡單查詢的 AsEnumerable() - AsEnumerable() → AsQueryable() (companies, bed_order_detail) - 優化分頁查詢模式 - 簡化查詢條件 4. bed_kindController.cs (4 處) - AsEnumerable() → AsQueryable() (bed_kind, bed_kind_detail) - 優化分頁查詢模式(兩處) - 優化 bedDt 查詢:移除 AsEnumerable(),改用 Where + ToList() - 修復 bed_kind_detail_id nullable 字段處理 技術改進: ✓ 所有查詢改為在數據庫執行 ✓ 統一使用三元運算符處理分頁 ✓ Count 在分頁前執行 ✓ 正確處理 nullable 字段(HasValue + .Value) ✓ IEnumerable<int> → List<int> 避免類型轉換錯誤
This commit is contained in:
@@ -49,11 +49,11 @@ public class newsController : BaseApiController
|
||||
// DELETE api/<controller>/5
|
||||
public void Delete(int id)
|
||||
{
|
||||
var prod = _db.news.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
||||
var prod = _db.news.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
||||
if (prod != null)
|
||||
{
|
||||
//刪除檔案
|
||||
var prod2 = _db.news_files.AsEnumerable().Where(q => q.news_id == id).ToList();
|
||||
var prod2 = _db.news_files.Where(q => q.news_id == id).ToList();
|
||||
if (prod2.Count > 0)
|
||||
{
|
||||
foreach (var item in prod2)
|
||||
@@ -91,12 +91,12 @@ public class newsController : BaseApiController
|
||||
{
|
||||
if (!string.IsNullOrEmpty(nums))
|
||||
{
|
||||
var getDelItem = nums.TrimEnd(',').Split(',').Select(s => int.Parse(s));
|
||||
var getDelItem = nums.TrimEnd(',').Split(',').Select(s => int.Parse(s)).ToList();
|
||||
|
||||
var prod = _db.news.AsEnumerable().Where(q => getDelItem.Contains(q.num)).ToList();
|
||||
var prod = _db.news.Where(q => getDelItem.Contains(q.num)).ToList();
|
||||
if (prod.Count() > 0)
|
||||
{
|
||||
var prod2 = _db.news_files.AsEnumerable().Where(q => getDelItem.Contains(q.news_id)).ToList();
|
||||
var prod2 = _db.news_files.Where(q => getDelItem.Contains(q.news_id)).ToList();
|
||||
if (prod2.Count > 0)
|
||||
{
|
||||
publicFun publicFun = new publicFun();
|
||||
@@ -139,7 +139,7 @@ public class newsController : BaseApiController
|
||||
public IHttpActionResult GetList([FromBody] Model.ViewModel.news q, int page, int pageSize = 10,
|
||||
string sortBy = "", bool sortDesc = false, bool top = false)
|
||||
{
|
||||
var qry = _db.news.AsEnumerable();
|
||||
var qry = _db.news.AsQueryable();
|
||||
|
||||
if (!string.IsNullOrEmpty(q.subject))
|
||||
qry = qry.Where(o => o.subject.Contains(q.subject.Trim()));
|
||||
@@ -258,10 +258,13 @@ public class newsController : BaseApiController
|
||||
else
|
||||
qry = qry.OrderByDescending(o => o.topping).ThenByDescending(o => o.num);
|
||||
}
|
||||
|
||||
var count = qry.Count();
|
||||
var qryList = (pageSize > 0) ? qry.ToPagedList(page, pageSize).ToList() : qry.ToList();
|
||||
|
||||
var ret = new
|
||||
{
|
||||
list = qry.ToPagedList(page, pageSize).Select(x => new
|
||||
list = qryList.Select(x => new
|
||||
{
|
||||
num = x.num,
|
||||
subject = x.subject,
|
||||
@@ -282,7 +285,7 @@ public class newsController : BaseApiController
|
||||
topping = x.topping
|
||||
|
||||
}),
|
||||
count = qry.Count()
|
||||
count = count
|
||||
|
||||
};
|
||||
|
||||
@@ -298,7 +301,7 @@ public class newsController : BaseApiController
|
||||
{
|
||||
|
||||
|
||||
var qry = _db.news_kind.AsEnumerable();
|
||||
var qry = _db.news_kind.AsQueryable();
|
||||
|
||||
if (!string.IsNullOrEmpty(q.kind))
|
||||
qry = qry.Where(o => o.kind.Contains(q.kind));
|
||||
@@ -319,17 +322,18 @@ public class newsController : BaseApiController
|
||||
range = o.range,
|
||||
}).OrderBy(x => x.root).ThenBy(x => x.kind).ToList(), 0, 0);
|
||||
|
||||
|
||||
var count = qry.Count();
|
||||
var qry2List = (pageSize > 0) ? qry2.ToPagedList(page, pageSize).ToList() : qry2.ToList();
|
||||
|
||||
var ret = new
|
||||
{
|
||||
list = qry2.ToPagedList(page, pageSize).Select(x => new
|
||||
list = qry2List.Select(x => new
|
||||
{
|
||||
num = x.num,
|
||||
kind = new TreeView().RptDash(x.Level) + x.kind,
|
||||
|
||||
}),
|
||||
count = qry.Count()
|
||||
count = count
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user