如何在不删除项目的情况下将新项目添加到 IEnumerable<model> 列表中

How to add new item into IEnumerable<model> list without deleting the items

[HttpPost]
    public JsonResult AjaxMethod(string[] departments)
    {
        IEnumerable<Batch> batchList = Enumerable.Empty<Batch>();
        try
        {
            string a;
            for (int i = 0; i < departments.Length; i++)
            {
                a = departments[i];
                batchList = batchList.Concat(obj.Batches.Where(x => x.Department_Id == a));
            }
            return Json(batchList);
        }
        catch
        {
            return Json(null);
        }
    }

我正在向 AjaxMethod() 发送一个包含两个索引 departments[0]="BSCS" 和 departments[1]="BSIT"

的数组 当 for 循环第二次运行时,我使用 concat 方法附​​加 IEnumerable 列表,它覆盖 departments[0] 的结果并将 departments[1] 与 departments[1]

连接起来 我想要这个输出:

bscs-f13
bscs-f14
bscs-f15
bsit-f13
bsit-f14
bsit-f15

但是实际输出是:

bsit-f13
bsit-f14
bsit-f15
bsit-f13
bsit-f14
bsit-f15

Linq 函数是 pure,因此串联会为每个循环分配新内存。您可以简单地迭代 departments 参数。

batchList = departments.SelectMany(d=>obj.Batches.Where(x => x.Department_Id == d));