добавить данные к объектам Списка из другого списка:Слияние двух списков различных типов
public void MergeLsts(List<A> lstA, List<B> lstB)
{
foreach (A dataA in lstA)
{
foreach (B dataB in lstB)
{
if (dataA.ItemNo == dataB.ItemNo)
{
//dataA.ItemDescription is up to this point empty!
dataA.ItemDescription = dataB.ItemDescription;
}
}
}
DoSomethingWithTheNewLst(lstA);
}
Это отлично работает. Однако это занимает довольно много времени, потому что оба списка довольно большие (около 70 тыс. Элементов в lstA и 20 тыс. Элементов в lstB).
Мне было интересно, есть ли более быстрый или эффективный способ выполнить то, что мне нужно? Может быть, с LINQ?
Если коллекции имеют одинаковую длину, вы можете использовать .Zip() –
Я предполагаю, что вы можете заказать данные в ItemNo. Если вы хотите сделать это вручную (не используя какую-либо библиотечную функцию), вы можете сделать это: отсортируйте оба списка по ItemNo, добавьте данные способом, похожим на шаг слияния в сортировке слияния. Это должно работать в nlogn. – Aziuth