2017-03-01 3 views
0

ストアドプロシージャから返された結果セットがあり、その結果からオブジェクトのフィールドに値を設定する必要があります。問題は私のオブジェクトは、結果から移入する必要があるフィールドを持つ別のオブジェクトを宣言しています。LINQ/Lambdaを使用してオブジェクト内で宣言されたオブジェクトに結果を選択する方法は?

私はVehicleオブジェクトを持っていて、Vehicleオブジェクト内に宣言しました。私はTruckオブジェクトを持っています。トラック表記でTruckオブジェクトのフィールドにアクセスすることはできません。簡略化されたコードとクラス。どのように私は結果セットからこれらの値を設定することができるように自動車オブジェクト内で宣言された私のトラックオブジェクトのメンバへのアクセスを得るんLINQ /ラムダを使用して

return dc.GetVehicleList(localDateTimeOffset).Select(p => new Vehicle 
{ 
    VehicleNumber = p.VehicleNumber 
    Truck.TruckNumber = p.TruckNumber /* This does not work */ 
}).Cast<IVehicle>().ToList(); 

public class Vehicle 
{ 
    public int VehicleNumber; 
    public Truck Truck; 
} 

public class Truck 
{ 
    public TruckNumber; 
} 

+0

クラスも含めてください。 – xszaboj

答えて

2

あなたは、外側1と一緒に内部オブジェクトを作成する必要があります:あなたはまた、Vehicleクラスのコンストラクタでトラックオブジェクトを作成し、クエリを保つことができる

return dc.GetVehicleList(localDateTimeOffset).Select(p => new Vehicle 
{ 
    VehicleNumber = p.VehicleNumber 
    Truck = new Truck 
    { 
     TruckNumber = p.TruckNumber 
    } 
}).Cast<IVehicle>().ToList(); 
+0

@Markはその部分を編集しました –

0

public class Vehicle 
{ 
    public Vehicle() 
    { 
     Truck = new Truck(); 
    } 

    public int VehicleNumber; 
    public Truck Truck; 
} 
関連する問題