Как добавить новый элемент в список IEnumerable<model>, не удаляя элементы
[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 выполняется 2 раза, он перезаписывает результат отделов [0] и объединяет отделы [1] с отделами [1].
Я хочу этот вывод:
КБС-f13
КБС-f14
КБС-f15
bsit-f13
bsit-f14
bsit-f15
Но фактический результат:
bsit-f13
bsit-f14
bsit-f15
bsit-f13
bsit-f14
bsit-f15
1 ответ
Решение
Функции Linq чистые, поэтому конкатенация выделяет каждому циклу новую память. Вы можете просто повторить departments
аргумент.
batchList = departments.SelectMany(d=>obj.Batches.Where(x => x.Department_Id == d));