如何在不删除项目的情况下将新项目添加到 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));
[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));