2016-09-26 12 views
0

私は3クラスを持っている:変換リスト<object>

public class MyClass 
{ 
    public Head Head { get; set; } 

    public List<Car> Cars { get; set; } 
} 

public class Head 
{ 
    public int Id { get; set; } 
} 

public class Car 
{ 
    public string Color { get; set; } 

    public bool Active { get; set; } 
} 

そして、もう一つのインスタンスList<object>

List<object> o = new List<object>() 
{ 
    new Head() 
    { 
     Id = 1 
    }, 
    new Car() 
    { 
     Color = "Yellow", 
     Active = false 
    }, 
    new Car() 
    { 
     Color = "Black", 
     Active = true 
    }, 
    new Car() 
    { 
     Color = "White", 
     Active = false 
    } 
}; 

私は私のクラスMyClass(最初のインデックスのインスタンスに私のインスタンスを変換したいです=プロパティ私のクラスのヘッドMyClassとすべての車=プロパティリスト

これを行うにはどのような方法が最適ですか?

+0

これを試してください:MyClassのMYCLASS =新しいMyClassの(){ ヘッド=(ヘッド)o.Take(1)、 車= o.Skip(1).Select(X =>(CAR)X ).ToList() }; Artiomのソリューションは、車を取得するための最初の項目をスキップしません。 – jdweng

+0

Artiomのソリューションでは、最初の項目はヘッドのタイプであるため、取り込まれません –

答えて

4

Linqがお手伝いします。 OfType拡張メソッドを使用して、特定のタイプのインスタンスを取得します。

new MyClass{ 
    Head = o.OfType<Head>().First(), 
    Cars = o.OfType<Car>().ToList() 
} 
関連する問題