2010-03-08 53 views
0
List<CertMail> lsRecipetNumber = new List<CertMail>(); 

CertMail类在数据访问层,返回List<CertMail>。我需要 转换成我的类的对象,并返回WCF Web服务 - 列表<>返回类型

List<CertMailReceiptNumbers> lsReceiptNumbers = new List<CertMailReceiptNumbers>(); 


CertMailReceipt.lsCMRN = lsReceiptNumbers; //---- > return this. 

我如何在CertMail列表中的所有行添加到CertMailRecieptNumbers并返回从CertMailRecieptNumbers类?

+0

你能告诉我们什么'CertMail'和'CertMailReceipt'看起来像什么吗?几乎一样吗? – 2010-03-08 17:09:46

+0

CertMail和CertMailReceipt不相似,CertMailReceipt是我的数据合同类,CertMail是CertMail是数据访问层中返回列表的类 Pinu 2010-03-08 17:52:56

回答

0

如果我理解正确,您的需求是一个简单的映射从一个到另一个。

那么你需要去THROU您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; 
} 
+0

谢谢,感谢您的帮助! – Pinu 2010-03-08 21:29:08

2

如果你只需要映射从CertMailCertMailReceipt和两种类型很相似,你可以使用一个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将遍历项目本身的列表,并将其映射应用于每个项目,并将其添加到结果输出列表中。

+0

我给了你+1,但同样,今天的ForEach lambda滥用是什么?如果它只是使用普通的旧式“foreach”,我会对此更加舒适。 – Aaronaught 2010-03-08 17:23:19

+0

@Aaronaught:这真的是个人喜好 - 无论哪种方式。加上AutoMapper,如果你的课程足够相似,你不需要两者中的任何一个:-) – 2010-03-08 17:25:16

+0

如果你让你一行操作或者如果你使用它的话,我是'.ForEach'的粉丝内联副作用 – 2010-03-08 17:35:05

相关问题