如下图所示,我有车辆清单。我想在CSV文件中显示这个,所以为了做到这一点,我想要压扁这个列表:
class Vehicle
{
int vid;
string name;
string desc;
CarType car;
TruckType truck;
TankType tank;
}
class CarType
{
int id;
string color;
string manual;
string model;
}
class TruckType
{
int id;
string width;
string heigh;
}
class TankType
{
int id;
string color;
string size;
}
如何将所有属性(包括复杂属性中的属性)放入平面列表中。 如何使用linq?
答案 0 :(得分:1)
这将创建一个包含所有展平字段的匿名对象,假设它们是公开的。
var flat = vehicles.Select(x => new {
vid = x.vid,
name = x.name,
desc = x.desc,
carId = x.car.id,
carColor = x.car.color;
carManual = x.car.manual;
carModel = x.car.model;
truckId = x.truck.id,
truckWidth = x.truck.width,
truckHeigh = x.truck.heigh,
tankId = x.tank.id,
tankColor = x.tank.color,
tankSize = x.tank.size
});
顺便说一下,你应该使用属性而不是暴露字段。