Member 9956700 Ответов: 2

Невозможно увеличить размер списка


Всем Привет,

У меня есть список. В моем списке есть только 1 запись.Я хочу добавить счетчик инкрементов в список. Если пользователь введет 5 значений, то один и тот же recor будет отображаться 5 раз.

1 Индия
2 Индия
3 Индия
4 Индия
5 Индия


Пример: если значение NdPlettes= 4. мой список будет отображаться 4 раза.
Если значение NdPlettes= 5. мой список будет отображаться 5 раз

теперь я получаю такой результат, как:
5 Индия
5 Индия
5 Индия
5 Индия
5 Индия

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

int index = 1;
               generateSeqNumber();
               foreach (var ProdSelection in ClientImpressionProdSelection)
               {
                   if (index <= InputProduct.NdPlettes)
                   {
                       ProdSelection.Sequence = Convert.ToInt32(GenResult);
                       ProdSelection.Number = index;
                       ProdSelection.ClientDestinataire = InputProduct.ClientDestinataire;
                       ProdSelection.LieuDeLivraison = InputProduct.LieuDeLivraison;
                       ProdSelection.CodeProduitClient = InputProduct.CodeProduitClient;
                       ProdSelection.CodeCouleurClient = InputProduct.CodeCouleurClient;
                       ProdSelection.CodeFournisseurEMPourClient = InputProduct.CodeFournisseurEMPourClient;
                       ProdSelection.AQP = InputProduct.AQP;
                       ProdSelection.Produit = InputProduct.Produit;
                       ProdSelection.RefFournisseur = InputProduct.RefFournisseur;
                       ProdSelection.NdShipment = InputProduct.NdShipment;
                       ProdSelection.NdLot = InputProduct.NdLot;
                       ProdSelection.Cdate = InputProduct.Cdate;
                       ProdSelection.PoidsNet = InputProduct.PoidsNet;
                       ProdSelection.PoidsBrut = InputProduct.PoidsBrut;
                       ProdSelection.NbrPallet = InputProduct.NdPlettes;
                       ProdSelection.Material = InputProduct.Material;
                       ProdSelection.CodClient = InputProduct.CodClient;
                       ProdSelection.CodPackaging = InputProduct.CodPackaging;
                       ProdSelection.CoefNetBrut = InputProduct.CoefNetBrut;
                       index++;
                       GetClientImpressionProductSel.Add(ProdSelection);
                   }

2 Ответов

Рейтинг:
2

OriginalGriff

Ваш цикл обрабатывает все записи - но он обрабатывает только те записи, которые есть. Если вы хотите обрабатывать записи несколько раз, то вам также понадобится внешний цикл:

while (index <= InputProduct.NdPlettes)
{
   foreach (var ProdSelection in ClientImpressionProdSelection)
   {
       if (index++ > InputProduct.NdPlettes) break;
       ProdSelection.Sequence = Convert.ToInt32(GenResult);
       ProdSelection.Number = index;
       ProdSelection.ClientDestinataire = InputProduct.ClientDestinataire;
       ProdSelection.LieuDeLivraison = InputProduct.LieuDeLivraison;
       ProdSelection.CodeProduitClient = InputProduct.CodeProduitClient;
       ProdSelection.CodeCouleurClient = InputProduct.CodeCouleurClient;
       ProdSelection.CodeFournisseurEMPourClient = InputProduct.CodeFournisseurEMPourClient;
       ProdSelection.AQP = InputProduct.AQP;
       ProdSelection.Produit = InputProduct.Produit;
       ProdSelection.RefFournisseur = InputProduct.RefFournisseur;
       ProdSelection.NdShipment = InputProduct.NdShipment;
       ProdSelection.NdLot = InputProduct.NdLot;
       ProdSelection.Cdate = InputProduct.Cdate;
       ProdSelection.PoidsNet = InputProduct.PoidsNet;
       ProdSelection.PoidsBrut = InputProduct.PoidsBrut;
       ProdSelection.NbrPallet = InputProduct.NdPlettes;
       ProdSelection.Material = InputProduct.Material;
       ProdSelection.CodClient = InputProduct.CodClient;
       ProdSelection.CodPackaging = InputProduct.CodPackaging;
       ProdSelection.CoefNetBrut = InputProduct.CoefNetBrut;
       GetClientImpressionProductSel.Add(ProdSelection);
   }
}


Member 9956700

Он работает неправильно. Он показывает рекорды 4 раза.
4 Индия
4 Индия
4 Индия
4 Индия

Но я хочу ...

1 Индия
2 Индия
3 Индия
4 Индия

OriginalGriff

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

Member 9956700

При добавлении в список я получаю 4 строки. Но "Продселекция.Число = индекс;". Это не отображается как 1, 2,3,4 вместо того, чтобы показывать 4,4,4,4.

OriginalGriff

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

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

Рейтинг:
2

Aydin Homay

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

Удачи