如何使用LINQ / Lambda将结果选择到对象内声明的对象?

时间:2017-03-01 23:02:51

标签: c# linq lambda

我有一个从存储过程返回的结果集,我需要从这些结果中填充对象的字段。问题是我的对象声明了另一个对象,其中包含需要从结果中填充的字段。

我有一个Vehicle对象并在我的Vehicle对象中声明我有一个Truck对象。我无法使用点表示法访问Truck对象的字段。简化的代码和类。

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

使用LINQ / Lambda如何获取对Vehicle对象中声明的Truck对象的成员的访问权限,以便我可以从结果集中设置这些值?

2 个答案:

答案 0 :(得分:2)

您需要创建内部对象以及外部对象:

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

答案 1 :(得分:0)

您还可以在Vehicle类的构造函数中创建truck对象并保留您的查询。

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

   public int VehicleNumber;
   public Truck Truck;
}