c# - 将两个列表的不同数据合并为一个
问题描述
因此,如果我有 3 个类:一个包含驾驶员的数据(他的姓名,车牌),第二个包含汽车数据(商标,车牌,制造年份,里程),第三个应该包含(Taksi)数据,例如司机姓名,车牌,汽车制造年份。
public class Car : Taksi
{
public string Trademark { get; set; }
public new int RegPlate { get; set; }
public int YearMade { get; set; }
public int Mileage { get; set; }
public Car (string Trademark, int RegPlate, int YearMade, int Mileage)
{
this.Trademark = Trademark;
this.RegPlate = RegPlate;
this.YearMade = YearMade;
this.Mileage = Mileage;
}
}
public class Driver : Taksi
{
public new string Name { get; set; }
public new int RegPlate { get; set; }
public Driver(string Name , int RegPlate )
{
this.Name = Name;
this.RegPlate = RegPlate ;
}
}
public class Taksi
{
public string Name { get; set; }
public int RegPlate { get; set; }
public string Trademark { get; set; }
public int YearMade { get; set; }
public int Mileage { get; set; }
public Taksi()
{
}
public Taksi(string Name,string Trademark,int YearMade)
{
this.Name = Name;
this.Trademark = Trademark;
this.YearMade = YearMade;
}
}
问题是我有两个列表。第一个列表保存司机的数据,第二个保存汽车的数据。现在我不知道获取“Car”和“Driver”类的部分数据(名称、注册牌、年份)的最佳方法是什么,然后将它们合并并添加到
List<Taksi> Taks = new List<Taksi>();
可能吗?
解决方案
我建议您重新考虑您的类结构 - Driver 不是 Taksi 的一种,因此不应从该类派生。Taksi 可以被认为是 Driver 和 Car 的组合,因此与其从 Taksi 派生 Car,不如从 Car 派生 Taksi(基本上您将 Taksi 视为一种 Car - 而不是 Car 作为Taksi 的类型)。
public class Car
{
public string Trademark { get; set; }
public int YearMade { get; set; }
public int Mileage { get; set; }
public int RegPlate { get; set; }
public Car (string Trademark, int RegPlate, int YearMade, int Mileage)
{
this.Trademark = Trademark;
this.RegPlate = RegPlate;
this.YearMade = YearMade;
this.Mileage = Mileage;
}
}
public class Driver
{
public string Name { get; set; }
public int RegPlate { get; set; }
public Driver(string Name , int RegPlate )
{
this.Name = Name;
this.RegPlate = RegPlate ;
}
}
public class Taksi : Car
{
public Driver TaksiDriver { get; set; }
public Taksi(Driver TaksiDriver, Car TaksiCar)
: base(TaksiCar.Trademark, TaksiCar.RegPlate, TaksiCar.YearMade, TaksiCar.Mileage)
{
this.TaksiDriver = TaksiDriver;
}
}
然后,您可以像这样组合您的汽车和司机列表:
List<Car> cars = new List<Car>();
List<Driver> drivers = new List<Driver>();
.....
.....
List<Taksi> taksis = (from car in cars
join driver in drivers on car.RegPlate equals driver.RegPlate
select new Taksi( driver, car )).ToList() ;
推荐阅读
- c++ - 我可以在不包括的情况下使用 C 套接字吗
? - python - IndexError:列表索引超出“if...else...”中的范围
- r - 我怎样才能为年龄间隔做一个指标?
- python - 使用不同的输入文件和不同的输出文件并行运行相同的函数
- google-apps-script - 如何检测特定列中的最新行?
- python - 语法错误:解析时出现意外的 EOF
- r - 使用 R 编程在 Twitter 上抓取数据时出错
- javascript - 按日期范围从和到过滤表列表
- python - 使用 Pandas,我可以创建一个新列,该列根据一个值是否存在于多个列中返回一个二进制变量?
- javascript - 如何将数组中的某些元素删除到新数组中,而其他元素只保留原始数组?