ここで実際に何が起こっているかを考えると、馬、レース、および特定のレースでの特定の馬のパフォーマンスがあります。
したがって、クラスの設計がこれに従うことを許可すると、次のようなものになる可能性があります。
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
}
気に入ったクラスデザインができたら、データを保存してクラスに簡単に取り込む方法を考え始めることができます。繰り返しデータが多い1つの巨大なcsvファイルの代わりに、クラスごとに個別のファイルを作成できます。つまり、Horses.csv、Races.csv、HorseRaces.csvです。最終的には、CSVから小さなファイルベースのデータベースにアップグレードすることをお勧めします。
最終的には、、、およびの3つのリストが必要Horses
になります。これらのリストを表示するには、をループして、とのプロパティを使用し、続いてとのプロパティを使用するだけで、必要なすべてのデータを簡単に取得できます。たとえば、。Races
HorseRaces
HorseRaces
HorseRace
Race
Horse
horseRace.Horse.Name