static MigrationScript[] GetScriptsToRun(MigrationScript[] scripts, MigrationVersion currentVersion) { IEnumerable <MigrationScript> scriptsToRun = null; switch (_settings.MigrationStrategy) { case MigrationStrategy.Version: string[] scriptsRun = _migrationManager.GetAllMigrations().Select(m => m.Version.ToString().ToLower()).ToArray(); scriptsToRun = scripts.Where(x => (_settings.VersionThreshold == null || x.Version.Version <= _settings.VersionThreshold.Version) && !scriptsRun.Contains(x.Version.ToString().ToLower())); break; default: scriptsToRun = scripts.Where(x => x.Version.Version > currentVersion.Version && (_settings.VersionThreshold == null || x.Version.Version <= _settings.VersionThreshold.Version)); break; } return(scriptsToRun.OrderBy(x => x.Version.Version).ToArray()); }