2009-07-24 10 views
3

Ich habe die folgenden zwei Klassen:Konvertieren oder Zuordnen einer Klasseninstanz in eine Liste eines anderen mithilfe von Lambda oder LINQ?

class MyData { 
    public List<string> PropertyList { get; private set;} 
    public string PropertyB { get; set; } 
    public string PropertyC { get; set; } 
} 

class MyData2 { 
    public string PropertyA { get; set;} 
    public string PropertyB { get; set; } 
    public string PropertyC { get; set; } 
} 

Wenn ich eine Instanz von MyClass haben, muss ich es auf eine Liste von MyData2 konvertieren. Ich kann es tun, indem MyData.PropertyList Looping und andere Eigenschaftswerte zwischenspeichern und sie auf eine Liste von MyData2 wie folgt einfügen:

string propertyB = myData.PropertyB; 
string propertyC = myData.PropertyC; 
List<MyData2> myData2List = new List<MyData>(); 
foreach(string item in myData.PropertyList) 
{ 
    myData2List.Add(new myData2() { item, propertyB, propertyC }); 
} 

Nicht sicher, ob dies mit .NET 3.5 Features von LINQ oder Lambda-Expression durchgeführt werden?

Antwort

13

Es ist schön und einfach. Sie möchten etwas basierend auf jedem Element (einer Zeichenfolge) in einer bestimmten Liste ausführen. Legen Sie also den Ausgangspunkt des Abfrageausdrucks fest. Sie möchten ein neues Element (a MyData2) für jede dieser Zeichenfolgen erstellen, also verwenden Sie eine Projektion. Sie möchten eine Liste am Ende zu schaffen, so wenden Sie ToList() den Job zu beenden:

var myData2List = myData.PropertyList 
         .Select(x => new MyData2 { 
          PropertyA = x, 
          PropertyB = myData.PropertyB, 
          PropertyC = myData.PropertyC }) 
         .ToList(); 
+0

wie über den Fall myDataList eine Liste von myData ist? Zum Beispiel von myDataList zu myData2List? –

Verwandte Themen