Если вам нужно сопоставить только от CertMail
до CertMailReceipt
и оба типа очень похожи, вы можете использовать автоматический помощник, такой как AutoMapper , чтобы помочь вам с отображением.
По сути, AutoMapper будет обрабатывать большую часть скучного и подверженного ошибкам левого-правого кода - назначая одно свойство на целевом объекту свойству исходного объекта.
В вашем случае, если два типа несколько похожи, вы можете сделать что-то вроде:
using AutoMapper;
Mapper.CreateMap<CertMail, CertMailReceipt>();
sourceList.ForEach(certMail =>
{
lsReceiptNumbers.Add(Mapper.Map<CertMail, CertMailReceipt>(certMail))
});
или, если вы предпочитаете:
using AutoMapper;
Mapper.CreateMap<CertMail, CertMailReceipt>();
foreach(certMail cm in sourceList)
{
lsReceiptNumbers.Add(Mapper.Map<CertMail, CertMailReceipt>(cm));
}
Это в основном та же идея, о которой упоминал NPayette, просто используя полуавтоматический маппер вместо того, чтобы писать весь процесс картирования самостоятельно.
И если вам повезет (и в зависимости от ваших типов структур данных), вы даже можете воспользоваться преимуществом Automapper, позволяющим даже отображать целые списки из одного типа в другой:
lsReceiptNumbers = Mapper.Map<List<CertMail>,
List<CertMailReceipt>>(sourceList);
Automapper сам просматривает список элементов, применяет свое сопоставление к каждому элементу и добавляет их в итоговый список вывода.