[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
答案 0 :(得分:2)
Linq函数是pure,因此连接分配每个循环的新内存。您可以简单地迭代departments
参数。
batchList = departments.SelectMany(d=>obj.Batches.Where(x => x.Department_Id == d));