2011-04-22 76 views
0

我一直在反對這個問題我的頭撞了幾個小時現在,如果任何人在這裏可以提供任何指針,我將不勝感激。我想我現在被這個人蒙上了一層陰影,所以一組新的腦細胞可能會看到一個非常簡單的解決方案!.net數據轉換(一個對象類型到另一個) - 循環

基本上,我從遺留數據庫中提取了一些數據,需要通過構建我們自己的Stock對象來轉換爲我們的庫存管理系統。

簡化模型如下所示:

Public Class Stock 
    Public Property Attributes As List(Of StockAttribute) 
End Class 

Public Class StockAttribute 
    Public Property AttributeName As String 
    Public Property AttributeValue As String 
End Class 

源數據來作爲此目的:

Public Class SourceOption 
    Public Property OptionName As String 
    Public Property OptionValue As String 
End Class 

一些樣品的數據可以使用這些方法來構造:

Function GetSourceList1() As List(Of SourceOption) 

    'prepare the source data 
    Dim options As New List(Of SourceOption) 

    Dim opt As New SourceOption 
    opt.OptionName = "Size" 
    opt.OptionValue = "Small" 

    Dim opt2 As New SourceOption 
    opt.OptionName = "Size" 
    opt.OptionValue = "Medium" 

    Dim opt3 As New SourceOption 
    opt.OptionName = "Size" 
    opt.OptionValue = "Large" 

    Dim opt4 As New SourceOption 
    opt.OptionName = "Colour" 
    opt.OptionValue = "Black" 

    Dim opt5 As New SourceOption 
    opt.OptionName = "Colour" 
    opt.OptionValue = "Purple" 


    options.Add(opt) 
    options.Add(opt2) 
    options.Add(opt3) 
    options.Add(opt4) 
    options.Add(opt5) 

    Return (options) 

End Function 


Function GetSourceList2() As List(Of SourceOption) 

    'prepare the source data 
    Dim options As New List(Of SourceOption) 

    Dim opt As New SourceOption 
    opt.OptionName = "Size" 
    opt.OptionValue = "40" 

    Dim opt2 As New SourceOption 
    opt.OptionName = "Size" 
    opt.OptionValue = "41" 

    Dim opt3 As New SourceOption 
    opt.OptionName = "Size" 
    opt.OptionValue = "42" 


    options.Add(opt) 
    options.Add(opt2) 
    options.Add(opt3) 

    Return (options) 

End Function 

Function GetSourceList3() As List(Of SourceOption) 

    'prepare the source data 
    Dim options As New List(Of SourceOption) 

    Dim opt As New SourceOption 
    opt.OptionName = "Size" 
    opt.OptionValue = "Small" 

    Dim opt2 As New SourceOption 
    opt.OptionName = "Size" 
    opt.OptionValue = "Large" 

    Dim opt3 As New SourceOption 
    opt.OptionName = "Colour" 
    opt.OptionValue = "Red" 

    Dim opt4 As New SourceOption 
    opt.OptionName = "Colour" 
    opt.OptionValue = "Blue" 

    Dim opt5 As New SourceOption 
    opt.OptionName = "Style" 
    opt.OptionValue = "A" 

    Dim opt6 As New SourceOption 
    opt.OptionName = "Style" 
    opt.OptionValue = "B" 

    options.Add(opt) 
    options.Add(opt2) 
    options.Add(opt3) 
    options.Add(opt4) 
    options.Add(opt5) 
    options.Add(opt6) 

    Return (options) 

End Function 

因此,我的「轉換」方法需要採用SourceOption列表並構建庫存列表(使用Attrib茨)作爲解釋在這裏:

子轉換()

'we need to convert the SourceOption list (in GetSourceList) into a list of Stock, each with a list of StockAttribute. So in the case of GetSourceList1 we would have 
'six stock objects, each stock object containing two StockAttribute objects (one for colour and one for size): 

'STOCK1 - Attribute1: Size:Small Attribute2: Colour:Black 
'STOCK2 - Attribute1: Size:Medium Attribute2: Colour:Black 
'STOCK3 - Attribute1: Size:Large Attribute2: Colour:Black 
'STOCK4 - Attribute1: Size:Small Attribute2: Colour:Purple 
'STOCK5 - Attribute1: Size:Medium Attribute2: Colour:Purple 
'STOCK6 - Attribute1: Size:Large Attribute2: Colour:Purple 

'in the case of GetSourceList2 we would have three stock objects with only one stockattribute each (for size): 

'STOCK1 - Attribute1: Size:40 
'STOCK2 - Attribute1: Size:41 
'STOCK3 - Attribute1: Size:42 

'in the case of GetSourceList3 we would have eigth stock objects with three stockattribute each (for size, colour and style): 

'STOCK1 - Attribute1: Size:Small Attribute2: Colour:Red Attribute3: Style:A 
'STOCK2 - Attribute1: Size:Large Attribute2: Colour:Red Attribute3: Style:A 
'STOCK3 - Attribute1: Size:Small Attribute2: Colour:Blue Attribute3: Style:A 
'STOCK4 - Attribute1: Size:Large Attribute2: Colour:Blue Attribute3: Style:A 
'STOCK5 - Attribute1: Size:Small Attribute2: Colour:Red Attribute3: Style:B 
'STOCK6 - Attribute1: Size:Large Attribute2: Colour:Red Attribute3: Style:B 
'STOCK7 - Attribute1: Size:Small Attribute2: Colour:Blue Attribute3: Style:B 
'STOCK8 - Attribute1: Size:Large Attribute2: Colour:Blue Attribute3: Style:B 

末次

我希望是十分明顯的,在此之前我撕所有我的頭髮出任何反饋真的可以理解!

感謝 卡爾

回答

1

我想你會發現有幫助的look here在ValueInjecter。通過應用您可以定義的一些約定,它可以幫助您將對象轉換爲對象。

相關問題