//public IEnumerable<string> GetFilePaths(DateTime? firstDate, DateTime? lastDate)
        //{
        //    IEnumerable<string> paths;
        //    if (firstDate.HasValue && lastDate.HasValue)
        //    {
        //        var lowerBound = firstDate.Value.Ticks;
        //        var upperBound = lastDate.Value.Ticks;
        //        paths = TickFileModels
        //            .Where(file => lowerBound < file.DateForFile.Ticks && file.DateForFile.Ticks < upperBound)
        //            .Select(file => file.File.LongFileName);
        //    }
        //    else
        //    {
        //        paths = new List<string> { };
        //    }
        //    return paths;
        //}

        public List <List <string> > GetGroupedFilePaths(DateTime?firstDate, DateTime?lastDate)
        {
            List <List <string> > groups = new List <List <string> > {
            };

            if (firstDate.HasValue && lastDate.HasValue)
            {
                var lowerBound      = firstDate.Value.Ticks;
                var upperBound      = lastDate.Value.Ticks;
                var selectedSymbols = SymbolModels.Where(s => s.Selected).ToList();
                var fileModels      = TickFileModels
                                      .Where(file => lowerBound <= file.DateForFile.Ticks && file.DateForFile.Ticks <= upperBound);
                var symbolFilteredFileModels = fileModels.Join(
                    selectedSymbols,
                    outerModel => outerModel.Symbol.Symbol,
                    innerModel => innerModel.Symbol,
                    (outerModel, innerModel) => outerModel);
                var distinctDates = fileModels
                                    .Distinct((model1, model2) => model1.DateForFile.Date == model2.DateForFile.Date)
                                    .Select(model => model.DateForFile);
                foreach (var _dateTime in distinctDates)
                {
                    var dateGroup = symbolFilteredFileModels
                                    .Where(model => model.DateForFile.Date == _dateTime.Date)
                                    .Select(model => model.File.LongFileName).ToList();
                    groups.Add(dateGroup);
                }
            }
            return(groups);
        }
        public void SetDates()
        {
            var selectedSymbols = SymbolModels.Where(s => s.Selected).ToList();
            var displayDates    = TickFileModels.Join(
                selectedSymbols,
                tickFileModel => tickFileModel.Symbol.Symbol,
                symbolModel => symbolModel.Symbol,
                (model, symbolModel) => model.DateForFile).Distinct().ToList();

            // Set min and max dates:
            if (displayDates.Count != 0)
            {
                FirstDate = displayDates.Min();
                LastDate  = displayDates.Max();
            }
            else if (TickFileModels.Count != 0)
            {
                FirstDate = TickFileModels.Select(m => m.DateForFile).Min();
                LastDate  = TickFileModels.Select(m => m.DateForFile).Max();
            }
            AvailableDates = new ObservableCollection <DateTime>(displayDates);
        }