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

时间:2017-07-16 08:51:44

标签: c# asp.net-mvc jquery-ajaxq

[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()一个带有两个索引部门的数组[0] =&#34; BSCS&#34;和部门[1] =&#34; BSIT&#34;

并且我使用concat方法在第二次for循环运行时附加IEnumerable列表,它覆盖部门[0]的结果并且它将部门[1]与部门[1]连接起来[1] 我想要这个输出:

的BSC-F13
的BSC-F14
的BSC-F15
BSIT-F13
BSIT-F14
BSIT-F15

但实际输出是:

BSIT-F13
BSIT-F14
BSIT-F15
BSIT-F13
BSIT-F14
BSIT-F15

1 个答案:

答案 0 :(得分:2)

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

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