[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">
我正在使用 concat 方法附加 IEnumerable 列表,当 for 循环第二次运行时,它会覆盖部门[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
Linq 函数是纯函数,因此串联为每个循环分配新内存。 您可以简单地迭代departments
参数。
batchList = departments.SelectMany(d=>obj.Batches.Where(x => x.Department_Id == d));