首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将两个列表的不同数据合并为一个

将两个列表的不同数据合并为一个
EN

Stack Overflow用户
提问于 2019-05-07 18:01:29
回答 2查看 96关注 0票数 0

因此,如果我有3个类:一个保存司机的数据(他的名字,车牌),第二个保存汽车数据(商标,车牌,制造年份,里程),第三个应该保存(Taksi)数据,比如司机姓名,车牌,汽车制造年份。

代码语言:javascript
复制
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“类的部分数据(名称、注册表、年份)然后将它们组合和添加的最佳方法是什么

代码语言:javascript
复制
List<Taksi> Taks = new List<Taksi>();

有可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-07 18:43:38

我建议您重新考虑您的类结构-驱动程序不是Taksi的一种类型,因此不应该从该类派生。Taksi可以被认为是驾驶员和汽车的组合,所以Taksi不应该从Taksi派生出汽车,而应该从汽车派生(基本上你将Taksi视为一种汽车,而不是一辆汽车作为Taksi的一种类型)。

代码语言:javascript
复制
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;
    }
}

然后,您可以像这样组合您的汽车和司机列表:

代码语言:javascript
复制
  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() ;
票数 2
EN

Stack Overflow用户

发布于 2019-05-07 18:13:15

试试这个,顺便说一句,Car类不需要这么多属性。

代码语言:javascript
复制
var cars = new List<Car>();
var drivers = new List<Driver>();

var taksi = from c in cars
            from d in drivers
            where c.RegPlate == d.RegPlate
            select new Taksi()
            {
                 Name = d.Name,
                 RegPlate = d.RegPlate,
                 Trademark = c.Trademark,
                 YearMade = c.YearMade,
                 Mileage = c.Mileage
            };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56020091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档