Use Array.Empty and fix a few multiple enumerations

(cherry picked from commit 11d91faaada0e70910c832ce405ddeed52a24172)
This commit is contained in:
Stepan Goremykin 2023-03-26 20:40:51 -07:00 committed by Bogdan
parent c987824174
commit 044de922fa
11 changed files with 28 additions and 22 deletions

View File

@ -16,7 +16,7 @@ namespace NzbDrone.Common.Composition
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(ContainerResolveEventHandler);
}
public static IEnumerable<Assembly> Load(IEnumerable<string> assemblyNames)
public static IList<Assembly> Load(IList<string> assemblyNames)
{
var toLoad = assemblyNames.ToList();
toLoad.Add("Radarr.Common");
@ -28,8 +28,9 @@ namespace NzbDrone.Common.Composition
var startupPath = AppDomain.CurrentDomain.BaseDirectory;
return toLoad.Select(x =>
AssemblyLoadContext.Default.LoadFromAssemblyPath(Path.Combine(startupPath, $"{x}.dll")));
return toLoad
.Select(x => AssemblyLoadContext.Default.LoadFromAssemblyPath(Path.Combine(startupPath, $"{x}.dll")))
.ToList();
}
private static Assembly ContainerResolveEventHandler(object sender, ResolveEventArgs args)

View File

@ -14,14 +14,14 @@ namespace NzbDrone.Common.OAuth
{
get
{
var parameters = this.Where(p => p.Name.Equals(name));
var parameters = this.Where(p => p.Name.Equals(name)).ToArray();
if (!parameters.Any())
{
return null;
}
if (parameters.Count() == 1)
if (parameters.Length == 1)
{
return parameters.Single();
}

View File

@ -111,7 +111,7 @@ namespace NzbDrone.Core.Datastore
{
if (!ids.Any())
{
return new List<TModel>();
return Array.Empty<TModel>();
}
var result = Query(x => ids.Contains(x.Id));

View File

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Net.Http;
using NLog;
@ -61,7 +62,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation.Proxies
catch (DownloadClientException e)
{
_logger.Error(e);
return new List<DownloadStationTask>();
return Array.Empty<DownloadStationTask>();
}
}

View File

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
@ -135,7 +136,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation.Proxies
catch (DownloadClientException e)
{
_logger.Error(e);
return new List<DownloadStationTask>();
return Array.Empty<DownloadStationTask>();
}
}

View File

@ -132,7 +132,7 @@ namespace NzbDrone.Core.Extras.Metadata
if (movieFolder.IsNullOrWhiteSpace())
{
return new List<MetadataFile>();
return Array.Empty<MetadataFile>();
}
var files = new List<MetadataFile>();

View File

@ -42,7 +42,7 @@ namespace NzbDrone.Core.Indexers
{
if (!SupportsRss)
{
return new List<ReleaseInfo>();
return Array.Empty<ReleaseInfo>();
}
return FetchReleases(g => g.GetRecentRequests(), true);
@ -52,7 +52,7 @@ namespace NzbDrone.Core.Indexers
{
if (!SupportsSearch)
{
return new List<ReleaseInfo>();
return Array.Empty<ReleaseInfo>();
}
return FetchReleases(g => g.GetSearchRequests(searchCriteria));

View File

@ -85,7 +85,7 @@ namespace NzbDrone.Core.Indexers
if (!PostProcess(indexerResponse, items, releases))
{
return new List<ReleaseInfo>();
return Array.Empty<ReleaseInfo>();
}
return releases;

View File

@ -57,12 +57,13 @@ namespace NzbDrone.Core.MediaFiles.MovieImport
_logger.Debug("Decisions: {0}", decisions.Count);
// I added a null op for the rare case that the quality is null. TODO: find out why that would even happen in the first place.
var qualifiedImports = decisions.Where(c => c.Approved)
.GroupBy(c => c.LocalMovie.Movie.Id, (i, s) => s
.OrderByDescending(c => c.LocalMovie.Quality ?? new QualityModel { Quality = Quality.Unknown }, new QualityModelComparer(s.First().LocalMovie.Movie.Profile))
.ThenByDescending(c => c.LocalMovie.Size))
.SelectMany(c => c)
.ToList();
var qualifiedImports = decisions
.Where(decision => decision.Approved)
.GroupBy(decision => decision.LocalMovie.Movie.Id)
.SelectMany(group => group
.OrderByDescending(decision => decision.LocalMovie.Quality ?? new QualityModel { Quality = Quality.Unknown }, new QualityModelComparer(group.First().LocalMovie.Movie.Profile))
.ThenByDescending(decision => decision.LocalMovie.Size))
.ToList();
var importResults = new List<ImportResult>();

View File

@ -43,11 +43,11 @@ namespace Radarr.Api.V3
[HttpGet]
public List<TProviderResource> GetAll()
{
var providerDefinitions = _providerFactory.All().OrderBy(p => p.ImplementationName);
var providerDefinitions = _providerFactory.All();
var result = new List<TProviderResource>(providerDefinitions.Count());
var result = new List<TProviderResource>(providerDefinitions.Count);
foreach (var definition in providerDefinitions)
foreach (var definition in providerDefinitions.OrderBy(p => p.ImplementationName))
{
_providerFactory.SetProviderCharacteristics(definition);

View File

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using FluentValidation;
using FluentValidation.Results;
using Microsoft.AspNetCore.Mvc;
@ -79,7 +80,8 @@ namespace Radarr.Http.REST
}
}
var attributes = descriptor.MethodInfo.CustomAttributes;
var attributes = descriptor.MethodInfo.CustomAttributes as IReadOnlyCollection<CustomAttributeData> ??
descriptor.MethodInfo.CustomAttributes.ToArray();
if (attributes.Any(x => VALIDATE_ID_ATTRIBUTES.Contains(x.AttributeType)) && !skipValidate)
{
if (context.ActionArguments.TryGetValue("id", out var idObj))