如果您考虑这里真正发生的事情,您会发现马匹、比赛以及特定马匹在特定比赛中的表现。
所以,如果你允许你的类设计遵循这个,你可能会有这样的东西:
public class Horse
{
public string Name { get; set; }
public Gender Gender { get; set; }
public Breed Breed { get; set; }
public DateTime WhenBorn { get; set; }
// etc...
public TimeSpan GetAge()
{
return DateTime.Now - WhenBorn;
}
}
public class Race
{
public string Venue { get; set; }
public DateTime WhenStarted { get; set; }
public DateTime WhenFinished { get; set; }
// etc...
}
public class HorseRace
{
public Race Race { get; set; }
public Horse Horse { get; set; }
public int? PlaceFinished { get; set; } // null if did not finish
public string JockeyName { get; set; }
public double HorseWeighIn { get; set; } // weight of horse at time of race
public double JockeyWeighIn { get; set; } // weight of jockey at time of race
// etc...
}
public enum Gender
{
Colt,
Filly
}
public enum Breed
{
// fill in breeds here
}
一旦你有了一个你喜欢的类设计,你就可以开始考虑如何存储你的数据,以便更容易地将它放入你的类中。您可以为每个类创建一个单独的文件,而不是一个包含大量重复数据的巨型 csv 文件,例如 Horses.csv、Races.csv、HorseRaces.csv。最终,您可能希望从 CSV 升级到基于文件的小型数据库。
最终,您希望拥有三个列表:Horses
、Races
和HorseRaces
。要显示这些列表,您可以遍历您的HorseRaces
,并轻松获取您需要的所有数据,只需使用 和 的属性,HorseRace
然后使用Race
和的属性Horse
。例如,horseRace.Horse.Name
。