Объедините два списка в 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, так как в любом случае вам нужен индекс текущего элемента.