-2
[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]="BSCS" 和部门[1]="BSIT" 的数组,

并且当 for 循环第二次运行时,我使用 concat 方法附​​加 IEnumerable 列表,它会覆盖部门 [0] 的结果并将部门 [1] 与部门 [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

4

1 回答 1

2

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

batchList = departments.SelectMany(d=>obj.Batches.Where(x => x.Department_Id == d));
于 2017-07-16T09:00:24.130 回答