2010-03-08 54 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