如果你只需要映射从CertMail
到CertMailReceipt
和两种类型很相似,你可以使用一个AUTOMAGIC帮手像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将遍历项目本身的列表,并将其映射应用于每个项目,并将其添加到结果输出列表中。
你能告诉我们什么'CertMail'和'CertMailReceipt'看起来像什么吗?几乎一样吗? – 2010-03-08 17:09:46
CertMail和CertMailReceipt不相似,CertMailReceipt是我的数据合同类,CertMail是CertMail是数据访问层中返回列表的类 –
Pinu
2010-03-08 17:52:56