2009-07-24 7 views
3

は、私は、次の2つのクラスを持っている:私は、MyClassのインスタンスを持っている場合はLambdaまたは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; } 
} 

は、私がMyData2のリストに変換する必要があります。

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 }); 
} 

ない、これはLINQやラムダ式の.NET 3.5の機能で行うことができるかどうかを確認します。私はMyData.PropertyListをループし、他のプロパティ値をキャッシュして、このようなMyData2のリストにそれらを挿入することによって、それを行うだろうか?

答えて

13

すてきで簡単です。特定のリスト内のすべての項目(文字列)に基づいて何かを実行したいので、それをクエリ式の開始点にします。これらの文字列ごとに新しいアイテム(MyData2)を作成したいので、プロジェクションを使用します。あなたが仕事を終えるためにToList()を呼び出すようにするには、最後にリストを作成したい:ケースについてmyDataListはMYDATAのリストがどのように

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

?例えば、myDataListからmyData2Listへ? –

関連する問題