Как добавить новый элемент в список 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));
Другие вопросы по тегам