List<CertMail> lsRecipetNumber = new List<CertMail>();
CertMail
类位于数据访问层,返回List<CertMail>
。我需要
将其转换为我的类的对象并返回
List<CertMailReceiptNumbers> lsReceiptNumbers = new List<CertMailReceiptNumbers>();
CertMailReceipt.lsCMRN = lsReceiptNumbers; //---- > return this.
如何将CertMail
列表中的所有行添加到CertMailRecieptNumbers
并从CertMailRecieptNumbers
类返回?
答案 0 :(得分:2)
如果您只需要从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将遍历项目列表本身,并将其映射应用于每个项目,并将其添加到结果输出列表中。
答案 1 :(得分:0)
如果我理解你的需要,那就是从一个映射到另一个的简单方法。
您需要通过CertMail列表,然后为每个人创建一个新的CertMailReceiptNumbers
实施例
...
lsReceiptNumber.ForEach(certMail =>
{
lsReceiptNumbers.Add(convertToCertMailReceiptNumber(certMail));
});
return lsReceiptNumber
}
Public CertMailReceiptNumbers convertToCertMailReceiptNumber(CertMail cm)
{
var cmrn = new ertMailReceiptNumber();
cmrn.xxx = cm.xxxx;
...;
return cmrn;
}