private static void AddTimeData(ref StationTrainTime stationTrainTime, TrainData td) { if (td.ArrivalType == TrainData.ArrivalTypes.Arrival) { stationTrainTime.ArrivalTime = td.Time; } else if (td.ArrivalType == TrainData.ArrivalTypes.Departure) { stationTrainTime.DepartureTime = td.Time; } }
private static List <Train> GetTrainList(IEnumerable <LineRange> lineRanges, IEnumerable <TrainData> trainDatas) { List <(LineRange, Train)> list = new List <(LineRange, Train)>(); foreach (var td in trainDatas) { if (lineRanges.Any(l => l == td.NowPosition)) { //tdは有効 if (list.Any(l => l.Item1 == td.NowPosition)) { var train = list.First(l => l.Item1 == td.NowPosition).Item2; if (train.TimeData.TryGetValue(td.DepartureStation, out var stationTrainTime)) { AddTimeData(ref stationTrainTime, td); } else { var stt = new StationTrainTime(); AddTimeData(ref stt, td); train.TimeData.Add(td.DepartureStation, stt); } } else { var train = new Train(); train.Destination = td.Destination; train.TrainName = td.Name; var stt = new StationTrainTime(); AddTimeData(ref stt, td); train.TimeData.Add(td.DepartureStation, stt); list.Add((td.NowPosition, train)); } } } return(new List <Train>(list.Select(tuple => tuple.Item2))); }