добавить данные в таблицу не стирая предыдущих

один пользователь может видеть работы нескольких гаражей, вначале он идентифицируется, ему выходит лист ВСЕХ гаражей ему доступных, затем Миша выбирает из списка гаражи, которые ему нужны прямо сейчас, все это происходит на странице1 для выбора в списке я использую Syncfusion

<SfMultiSelect TValue="string[]" TItem="GarajModel" Placeholder=@localizerTrad["ChoiceGarage"] DataSource="@garajList" @bind-Value="@MultiVal" Mode="VisualMode.Box">
    <MultiSelectFieldSettings Text="NameGaraje" Value="CodeGaraj" />
    <MultiSelectEvents TItem="GarajModel" TValue="string[]" OnValueSelect="OnSelect" OnValueRemove="OnDeselect" ValueChange="@OnSelectValue" />
</SfMultiSelect>

класс Модель

public class GarajModel
{
    public string NameGaraje {get; set;}
    public string CodeGaraj {get; set;}
}

когда Миша выбирает из списка гараж1 и гараж2 он "идентифитируется" второй раз и переходит на страницу2 где таблица показывает ему "работы" тех гаражей что он выбрал, моя функция проходится по данным и выдает ему только гараж2, потому что когда входит в цикл 2ой раз то стирает данные с таблицы о первом гараже

Подскажите как "добавить" в таблицу данные не стирая предыдущих

страница .razor //было раньше и теперь не актуально, смотреть изменения ниже

private async Task GetRabotiGarajey()
{   
    foreach (var garaj in SpisokGarajey) //в списке два гаража, те пользователь заходит сюда два раза и второй раз стирает, что в памяти
    {
        if (!string.IsNullOrEmpty(garaj.code1) && !string.IsNullOrEmpty(garaj.code2))
            try
            {
                tablicaVremennaya = await garajService.GetGarajList(garaj.code1, garaj.code2); // тут как можно добваить tablicaPoKotoroyDelayuBindingPokaza.add(tablicaVremennaya);

            }
            catch (Exception e)
            {
                string msg = e.Message;
            }
    }
    tablicaPoKotoroyDelayuBindingPokaza = tablicaVremennaya;
    this.StateHasChanged();
}

тип данных

public static List<Garaj> SpisokGarajey{ get; set; } = null;
 IEnumerable<RabotiGaraja>? tablicaVremennaya;
IEnumerable<RabotiGaraja>? tablicaPoKotoroyDelayuBindingPokaza;

✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳❇❇❇

чтоб исправить это, я подправила код и использую "временную таблицу" добавляя гаражи, а не показывая ТОЛЬКО последний гараж, что выбрал Миша

IEnumerable<ModelRabotiGaraja> tablicaVremennaya;
IEnumerable<ModelRabotiGaraja> tablicaPoKotoroyDelayuBindingPokaza;


private async Task GetRabotiGarajey()
{
    tablicaPoKotoroyDelayuBindingPokaza = null; //иначе прибавляет потом строки
    tablicaVremennaya = null; //то же самое

    foreach (var garaje in SpisokGarajey)
    {
        if (!string.IsNullOrEmpty(garaj.code1) && !string.IsNullOrEmpty(garaj.code2))
            try
            {
                tablicaVremennaya = await garajService.GetGarajList(garaj.code1, garaj.code2);

                if (tablicaPoKotoroyDelayuBindingPokaza == null)
                {
                    tablicaPoKotoroyDelayuBindingPokaza = missionListsModelTemp.ToList();
                }
                else
                {
                    tablicaPoKotoroyDelayuBindingPokaza = 
                tablicaPoKotoroyDelayuBindingPokaza.Concat(tablicaVremennaya); 
//то есть первый гараж в таблице уже есть и я добавляю строки второго гаража с помощью Concat                                   
                }
            }
            catch (Exception e)
            {
                string msg = e.Message;
            }
    }

    this.StateHasChanged();
}

все как бы костыльно, и я приблизительно вижу, что @Иван Рудаков, ведет код в верное русло, но у меня не получается применить именно к моему случаю пример в его ответе.


Ответы (2 шт):

Автор решения: Dev18

я использовала Concat и немного изменила метод, в итоге моя таблица показывает верные данные.

IEnumerable<ModelRabotiGaraja> tablicaVremennaya;
IEnumerable<ModelRabotiGaraja> tablicaPoKotoroyDelayuBindingPokaza;


private async Task GetRabotiGarajey()
{
    tablicaPoKotoroyDelayuBindingPokaza = null; //иначе прибавляет потом строки
    tablicaVremennaya = null; //то же самое

    foreach (var garaje in SpisokGarajey)
    {
        if (!string.IsNullOrEmpty(garaj.code1) && !string.IsNullOrEmpty(garaj.code2))
            try
            {
                tablicaVremennaya = await garajService.GetGarajList(garaj.code1, garaj.code2);

                if (tablicaPoKotoroyDelayuBindingPokaza == null)
                {
                    tablicaPoKotoroyDelayuBindingPokaza = missionListsModelTemp.ToList();
                }
                else
                {
                    tablicaPoKotoroyDelayuBindingPokaza = 
                tablicaPoKotoroyDelayuBindingPokaza.Concat(tablicaVremennaya); 
//то есть первый гараж в таблице уже есть и я добавляю строки второго гаража с помощью Concat                                   
                }
            }
            catch (Exception e)
            {
                string msg = e.Message;
            }
    }

    this.StateHasChanged();
}
→ Ссылка
Автор решения: Иван Рудаков

Для того чтобы правильно получить для пользователя все списки гаражей нужно использовать массив или коллекцию. До цикла вы указали tablicaVremennaya = null; а в самом цикле tablicaVremennaya = awaitgarajService.GetGarajList(garaj.code1, garaj.code2); то есть каждый проход цикла создает новый гараж. Используйте к примеру

     // Создаем коллекцию гаражей
var GarageTemp = new List<tablicaVremennaya>();
private async Task GetRabotiGarajey()
{   
    foreach (var garaj in SpisokGarajey)
    {
        if (!string.IsNullOrEmpty(garaj.code1) && !string.IsNullOrEmpty(garaj.code2))
                GarageTemp.Add(await garajService.GetGarajList(garaj.code1, garaj.code2)); 
    }
    tablicaPoKotoroyDelayuBindingPokaza = tablicaVremennaya;
    this.StateHasChanged();
}

В вашем ответе все работает за счёт условий, при втором проходе цикла все также создается таблица tablicaVremennaya, то есть в каждом новом повторении перезаписывается в памяти таблица и за счёт условий if else вы склеиваете данные, обращение к ним и их свойствам в этом случае не очень удобное так как по id будет не так просто получить то что надо, вам выдаст все два класса. Посмотрите мой пример. Если у вас разные таблицы tablicaVremennaya и tablicaPoKotoroyDelayuBindingPokaza. Вы можете создать промежуточную таблицу. И загружать данные в нее. И будет доступ к обоим классам без костылей

→ Ссылка