示例#1
0
 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;
     }
 }
示例#2
0
        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)));
        }