From 9a0d5ae700d3bcb730fc042da305cb4a8336a8eb Mon Sep 17 00:00:00 2001 From: yiming Date: Wed, 12 Nov 2025 17:01:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=BE=A9=20Batch=201=20=E4=B8=AD=20IE?= =?UTF-8?q?numerable.Contains=20=E7=9A=84=E5=9E=8B=E5=88=A5=E8=BD=89?= =?UTF-8?q?=E6=8F=9B=E5=95=8F=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 問題: - Split().Select(int.Parse) 返回 IEnumerable - LINQ to Entities 中使用 Contains 需要具體集合類型 修復: - 在所有 Split().Select() 後加 .ToList() - 確保 EF 可以將 Contains 轉換為 SQL IN 子句 影響文件: - memberController.cs (2 處) - accountingController.cs (1 處) - FollowerController.cs (1 處) - stockController.cs (1 處) 技術說明: LINQ to Entities 要求 Contains 的集合參數是具體化的集合(List/Array), 而不能是延遲執行的 IEnumerable,以便正確生成 SQL 查詢。 --- web/App_Code/api/FollowerController.cs | 2 +- web/App_Code/api/accountingController.cs | 2 +- web/App_Code/api/memberController.cs | 4 ++-- web/App_Code/api/stockController.cs | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/web/App_Code/api/FollowerController.cs b/web/App_Code/api/FollowerController.cs index 6373c90..872eeff 100644 --- a/web/App_Code/api/FollowerController.cs +++ b/web/App_Code/api/FollowerController.cs @@ -94,7 +94,7 @@ public class FollowerController : ApiController { 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.followers.Where(q => getDelItem.Contains(q.num)).ToList(); if (prod.Count() > 0) diff --git a/web/App_Code/api/accountingController.cs b/web/App_Code/api/accountingController.cs index af5f598..44ea0c4 100644 --- a/web/App_Code/api/accountingController.cs +++ b/web/App_Code/api/accountingController.cs @@ -89,7 +89,7 @@ public class accountingController : 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.accountings.Where(q => getDelItem.Contains(q.num)).ToList(); if (prod.Count() > 0) diff --git a/web/App_Code/api/memberController.cs b/web/App_Code/api/memberController.cs index 79d57ce..0be0c1a 100644 --- a/web/App_Code/api/memberController.cs +++ b/web/App_Code/api/memberController.cs @@ -93,7 +93,7 @@ public class memberController : 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.members.Where(q => getDelItem.Contains(q.num)).ToList(); if (prod.Count() > 0) @@ -135,7 +135,7 @@ public class memberController : BaseApiController { if (!string.IsNullOrEmpty(nums)) { - var ids = nums.TrimEnd(',').Split(',').Select(s => int.Parse(s)); + var ids = nums.TrimEnd(',').Split(',').Select(s => int.Parse(s)).ToList(); var prod = _db.member_check.Where(q => ids.Contains(q.num)).ToList(); if (prod.Count() > 0) { diff --git a/web/App_Code/api/stockController.cs b/web/App_Code/api/stockController.cs index fc38c8c..015d842 100644 --- a/web/App_Code/api/stockController.cs +++ b/web/App_Code/api/stockController.cs @@ -85,7 +85,7 @@ public class stockController : 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.stocks.Where(q => getDelItem.Contains(q.num)).ToList(); if (prod.Count() > 0) {