AK.F1.Timing.Model.Driver.LapTimesModel.OnCollectionChanged C# (CSharp) Method

OnCollectionChanged() private method

private OnCollectionChanged ( object sender, NotifyCollectionChangedEventArgs e ) : void
sender object
e System.Collections.Specialized.NotifyCollectionChangedEventArgs
return void
        private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            InnerHistory.Clear();

            int minLapNumber = 0;
            int maxLapNumber = 0;
            bool collectionsAreEmpty = true;

            foreach(var time in S1.Items.Concat(S2.Items).Concat(S3.Items).Concat(Laps.Items))
            {
                minLapNumber = Math.Min(time.LapNumber, minLapNumber);
                maxLapNumber = Math.Max(time.LapNumber, maxLapNumber);
                collectionsAreEmpty = false;
            }

            if(collectionsAreEmpty)
            {
                return;
            }

            for(int lapNumber = maxLapNumber; lapNumber >= minLapNumber; --lapNumber)
            {
                try
                {
                    InnerHistory.Add(new LapHistoryEntry(
                        S1.Items.Where(x => x.LapNumber == lapNumber).FirstOrDefault(),
                        S2.Items.Where(x => x.LapNumber == lapNumber).FirstOrDefault(),
                        S3.Items.Where(x => x.LapNumber == lapNumber).FirstOrDefault(),
                        Laps.Items.Where(x => x.LapNumber == lapNumber).FirstOrDefault()));
                }
                catch {}
            }
        }