Jamie888 Ответов: 2

Добавление значений возвращается в существующий dtolist


Привет, у меня есть следующие коды, в которых у меня будет цикл foreach для возврата нужных мне данных. У меня есть 2 значения, так что цикл будет происходить дважды. После завершения первого цикла данные будут сохранены в DtoList. Впоследствии второй цикл добавит свои данные под данными из первого цикла.
Но то, что я получу из приведенных ниже кодов, перезапишет существующие данные в первом цикле и заменит их данными из второго цикла.
Как я могу добиться добавления данных из второго цикла в первый цикл без потери первого?
Ниже приведены мои коды:
DataModel<NewDtoList> dataModel = new DataModel<NewDtoList>();
var splittedId = new List<string>();

for (int i = 0; i < oldId.Length; i += 4)
{
    if (oldId.Length - i >= 4)
    {
        splittedId .Add(oldId.Substring(i, 4));
    }
    else
    {
        splittedId .Add(oldId.Substring(i, oldId.Length - i));
    }
} // no problem until here

foreach (string id in splittedId )
{
    dataModel = ManagerFactory.Instance.CustomerManager.GetCustomerByIdList(int.Parse(site), id); // no error in retrieving data
    dataModel.Data1.DtoList.Add(dataModel.Data1.DtoList); // I am getting stuck here
}


Что я уже пробовал:

1. Поиск в интернете какого-то решения, но безрезультатно.

2 Ответов

Рейтинг:
0

Jawad Ahmed Tanoli

вы используете один и тот же список для извлечения и повторного добавления в него данных.
попробуйте сделать это в цикле, а затем проверьте модель данных.

foreach (string id in splittedId )
{
var dataModel1 = ManagerFactory.Instance.CustomerManager.GetCustomerByIdList(int.Parse(site), id);
dataModel.Data1.DtoList.Add(dataModel1.Data1.DtoList);
}
or
foreach (string id in splittedId )
{
dataModel.Data1.DtoList.Add(ManagerFactory.Instance.CustomerManager.GetCustomerByIdList(int.Parse(site), id).Data1.DtoList);

}


Jamie888

Сэр, я испробовал оба ваших метода, но, к сожалению, они не сработали.

Jawad Ahmed Tanoli

вы его отлаживаете ? та же проблема, с которой вы столкнулись, это не добавление новых данных в dataModel, верно?

Jamie888

Он имеет красную строку ошибки под кодами, которые вы предложили.

Jawad Ahmed Tanoli

ты попробуешь вот это?
по каждому элементу (строка с идентификатором в splittedId )
{
var dataModel1 = ManagerFactory.Пример.CustomerManager.GetCustomerByIdList(int. Parse(site), id);
dataModel.Данных1.DtoList.Добавить(dataModel1.Данных1.DtoList);
}
можете ли вы прочитать ошибку, что это такое?

Jawad Ahmed Tanoli

это ваш весь код какой-нибудь другой цикл там??

Рейтинг:
0

Mark Vinod Sinnathamby

Привет,

Пожалуйста, поправьте меня, если мое понимание неверно...

Если вы говорите, что цикл foreach выполняется дважды, я предполагаю, что объект splittedId List<string> содержит 2 значения, которые различны по значению.

Внутри цикла foreach вы получаете отдельного клиента по идентификатору, а объект dataModel, которому вы назначаете этого клиента, является другой ссылкой каждый раз, когда выполняется цикл. Вы не перезаписали данные в DtoList с первого запуска цикла, у вас просто есть разные экземпляры dataModel в каждом запуске цикла, который содержит свой собственный DtoList.

Если вы хотите добавить данные в общий список для каждого запуска цикла, создайте общий DtoList вне цикла и добавьте его для каждой модели данных внутри цикла. Пожалуйста, посмотрите этот пример основы кодирования, который я создал, имитируя ваше ожидаемое поведение (вы можете выполнить код в основе кодирования и увидеть распечатанные добавленные значения): Пример Кодирования Земли[^]

С уважением,
Марк.