Member 12277263 Ответов: 1

Как использовать коллекцию в цикле


Привет всем, в методе обновления у меня был int count, скажем count == 4, Затем я использую for loop, чтобы получить id, версию и набор. В этом случае Id, version и set values получают только последнее значение, но как получить все значения

public void Updates(AUnit _aUnit, int Id)
    {
        ImageDetails _details = new ImageDetails(_aUnit, Id);

        int count = (int) _aUnit.ReadBits(8);
        for (int i = 0; i < (int) count; i++)
        {
            _details.ID = (int) _aUnit.ReadBits(8);
            _details.Version = (int) _aUnit.ReadBits(8);
            _details.set = (int) _aUnit.ReadBits(24);
        }

        _details.Rset = _aUnit.Buffer.Skip(10).Take(_details.set).ToArray();

        //MemoryStream ms = new MemoryStream(_details.PortrateImages.First());
        //Image image = Image.FromStream(ms);
        //Bitmap bmp = new Bitmap(image);

        _details.UpdateTime = DateTime.Now.ToString("h:mm:ss tt");
        newData.Add(_details);
    }
public class ImageDetails
  {
    public ImageDetails(AUnit _au, int carouselId)
    {            
        carId = carouselId;
        _AUnit = _au;         

        _updateTime = "";
    }
    private string _updateTime;
    public int ID { get; set; }
    public int Version { get; set; }
    public int set { get; set; }
    public int carId { get; set; }
    public byte[] Rset { get; set; }
    public AUnit _AUnit { get; set; }
    public byte[] bytes { get; set; }
    public List<byte[]> dataArray = new List<byte[]>();

    public string UpdateTime
    {
        get { return _updateTime; }
        set { _updateTime = value; }
    }

    public List<byte[]> PImages
    {
        get
        {
            List<byte[]> Plogos = new List<byte[]>();
            if (carId == 2)
            {
                Plogos.Add(Rset);
            }
            return Plogos;
        }

    }
    public List<byte[]> LImages
    {
        get
        {
            List<byte[]> Llogos = new List<byte[]>();
            if (carId == 1)
            {
                Llogos.Add(Rset);
            }

            return Llogos;
        }

    }
}


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

Я пробовал, но чувствую, что это неправильно и не работает, создал отдельный список для id, версии и набора, например: _details.imageList.Add(logoHeader.Логоид);

F-ES Sitecore

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

1 Ответов

Рейтинг:
2

Ralf Meier

Попробовать следующее :

#
public void Updates(AUnit _aUnit, int Id)
    {
 
        int count = (int) _aUnit.ReadBits(8);
        for (int i = 0; i < (int) count; i++)
        {
            ImageDetails _details = new ImageDetails(_aUnit, Id);
            _details.ID = (int) _aUnit.ReadBits(8);
            _details.Version = (int) _aUnit.ReadBits(8);
            _details.set = (int) _aUnit.ReadBits(24);
            newData.Add(_details);
        }
 
        _details.Rset = _aUnit.Buffer.Skip(10).Take(_details.set).ToArray();
 
        //MemoryStream ms = new MemoryStream(_details.PortrateImages.First());
        //Image image = Image.FromStream(ms);
        //Bitmap bmp = new Bitmap(image);
 
        _details.UpdateTime = DateTime.Now.ToString("h:mm:ss tt");
    }


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