Объедините два списка в C#, используя For Each

У меня есть два списка объектов в C#, как указано ниже

List A

[0]
    Count="0",
    CountType="0",
    InvTpeCode="DLX"
[1]
    Count="0",
    CountType="0"
    InvTpeCode="STD"

List B

[0]
    Count="2",
    CountType="17"
[1]
    Count="12",
    CountType="14"

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

Примечание: оба списка имеют одинаковый размер

4 ответа

Решение

Вместо forпетлю вы также можете использовать Zip

var result = A.Zip(B, (a, b) => new Item {
                             InvTpeCode = a.InvTpeCode,
                             CountType = b.CountType, 
                             Count = b.Count });

Если списки имеют одинаковый размер, то цикла for будет достаточно:

for (int i=0; i< A.Count();i++)
{
    A[i].Count = B[i].Count;
    A[i].CountType = B.CountType;
}

Цикл foreach здесь невыполним, я бы сделал следующее:

for(int i=0; i < A.Count(); i++) 
{
    A[i].Count = B[i].Count;
    A[i].CountType = B[i].CountType;
}

Но имейте в виду, что это умрет тяжело, если список А длиннее, чем Б.

Сначала убедитесь, что списки имеют одинаковый размер.

var index = 0;
foreach ( ObjA itemA in listA) {
  replaceValues(ObjA, listB[index]);
  index++;
}

Затем метод replaceValues ​​должен заменить свойства ObjA свойствами элемента из listB (с той же позицией). Но я думаю, что нет смысла использовать здесь foreach. Можно использовать простой цикл for, так как в любом случае вам нужен индекс текущего элемента.

Другие вопросы по тегам