Как установить значение одного свойства класса для другого свойства класса в другом списке generi c в C#? - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть два List<T>: List<Address> и List<AddressType>. Это свойства обоих классов:

Адрес

 public class Address
    {
        public int Id { get; set; }
        public string AddressLine { get; set; }
        public string City { get; set; }
        public string Country { get; set; }
        public string ZipCode { get; set; }

    }

AddressType

 public class AddressType
    {
        public int CustomerId { get; set; }
        public int AddressId { get; set; }
        public string AddressTypeName { get; set; }

    }

Я хочу установить значение каждого элемента Id of Address в List<Address> для AddressId каждого AddressType в List<AddressType> в соответствии с их порядком в списке. если у меня есть несколько адресов и адресов, которые я храню в List<Address> и List<AddressType> соответственно, каков наилучший способ установить значения?

Ответы [ 3 ]

0 голосов
/ 01 апреля 2020
        for (int i = 0; i < addressList.Count; i++)
        {
            addressList[i].Id = typeList[i].AddressId;
        }
0 голосов
/ 01 апреля 2020

Вы можете использовать для l oop:

for(int i = 0; i < adressList.Count; i++)
 {
 adressList[i].Id = typeList[i].AddressId;
 }

При необходимости вы также можете добавить проверку, если оба списка имеют одинаковую длину:

if(addressList.Count != typeList.Count)
 {
 throw new Exception("the lists do not have the same length");
 }
0 голосов
/ 01 апреля 2020

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

var addressEnumerator = addressList.GetEnumerator();
var typeEnumerator = typeList.GetEnumerator();

while (addressEnumerator.MoveNext())
{
    typeEnumerator.MoveNext();
    addressEnumerator.Current.Id = typeEnumerator.Current.AddressId;
    // throws exception when typeList is shorter than addressList
}

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

...