This commit is contained in:
Mike Phares 2023-11-11 23:08:32 -07:00
parent 0a940b4cee
commit 669762bdc9
20 changed files with 108 additions and 118 deletions

View File

@ -270,7 +270,7 @@ public partial class DlibDotNet
mapLogic = new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _MapConfiguration, _Distance, personContainers, ticks, a2PeopleContentDirectory, a2PeopleSingletonDirectory, eDistanceContentDirectory); mapLogic = new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _MapConfiguration, _Distance, personContainers, ticks, a2PeopleContentDirectory, a2PeopleSingletonDirectory, eDistanceContentDirectory);
foreach (string outputResolution in _Configuration.OutputResolutions) foreach (string outputResolution in _Configuration.OutputResolutions)
{ {
if (outputResolution.Any(l => char.IsNumber(l))) if (outputResolution.Any(char.IsNumber))
continue; continue;
configurationOutputResolutionsHas = true; configurationOutputResolutionsHas = true;
if (!runToDoCollectionFirst) if (!runToDoCollectionFirst)

View File

@ -38,7 +38,7 @@ public class Face : Properties.IFace
{ {
DateTime?[] dateTimes; DateTime?[] dateTimes;
_OutputResolution = new(outputResolutionHeight, outputResolutionOrientation, outputResolutionWidth); _OutputResolution = new(outputResolutionHeight, outputResolutionOrientation, outputResolutionWidth);
dateTimes = new DateTime?[] { property.CreationTime, property.LastWriteTime, property.DateTime, property.DateTimeDigitized, property.DateTimeFromName, property.DateTimeOriginal, property.GPSDateStamp }; dateTimes = [property.CreationTime, property.LastWriteTime, property.DateTime, property.DateTimeDigitized, property.DateTimeFromName, property.DateTimeOriginal, property.GPSDateStamp];
_DateTime = (from l in dateTimes where l.HasValue select l.Value).Min(); _DateTime = (from l in dateTimes where l.HasValue select l.Value).Min();
} }

View File

@ -189,7 +189,7 @@ public class FaceFileSystem : FileSystem, Properties.IFaceFileSystem
{ {
int order = 0; int order = 0;
double len = _SourceSize.Value; double len = _SourceSize.Value;
string[] sizes = { "B", "KB", "MB", "GB", "TB" }; string[] sizes = ["B", "KB", "MB", "GB", "TB"];
while (len >= 1024 && order < sizes.Length - 1) while (len >= 1024 && order < sizes.Length - 1)
{ {
order++; order++;

View File

@ -52,7 +52,7 @@ public class Item : Properties.IItem
} }
public Item(FileHolder sourceDirectoryFileHolder, string relativePath, FileHolder imageFileInfo, bool? isNotUniqueAndNeedsReview, bool isUniqueFileName, bool isValidImageFormatExtension, Property? property, string[] alternateFileLines, bool? abandoned, bool? fileSizeChanged, bool? lastWriteTimeChanged) : public Item(FileHolder sourceDirectoryFileHolder, string relativePath, FileHolder imageFileInfo, bool? isNotUniqueAndNeedsReview, bool isUniqueFileName, bool isValidImageFormatExtension, Property? property, string[] alternateFileLines, bool? abandoned, bool? fileSizeChanged, bool? lastWriteTimeChanged) :
this(alternateFileLines, new(), fileSizeChanged, imageFileInfo, isNotUniqueAndNeedsReview, isUniqueFileName, isValidImageFormatExtension, lastWriteTimeChanged, null, property, relativePath, null, sourceDirectoryFileHolder) this(alternateFileLines, [], fileSizeChanged, imageFileInfo, isNotUniqueAndNeedsReview, isUniqueFileName, isValidImageFormatExtension, lastWriteTimeChanged, null, property, relativePath, null, sourceDirectoryFileHolder)
{ {
if (relativePath.EndsWith(".json")) if (relativePath.EndsWith(".json"))
throw new ArgumentException("Can not be a *.json file!"); throw new ArgumentException("Can not be a *.json file!");
@ -61,7 +61,7 @@ public class Item : Properties.IItem
} }
public Item(FileHolder sourceDirectoryFileHolder, string relativePath, bool isValidImageFormatExtension) : public Item(FileHolder sourceDirectoryFileHolder, string relativePath, bool isValidImageFormatExtension) :
this(sourceDirectoryFileHolder, relativePath, sourceDirectoryFileHolder, null, false, isValidImageFormatExtension, null, Array.Empty<string>(), null, null, null) this(sourceDirectoryFileHolder, relativePath, sourceDirectoryFileHolder, null, false, isValidImageFormatExtension, null, [], null, null, null)
{ } { }
public override string ToString() public override string ToString()

View File

@ -35,7 +35,7 @@ public record MappingFromItem(DateTime[] ContainerDateTimes,
List<DateTime> dateTimes = item.Property.GetDateTimes(); List<DateTime> dateTimes = item.Property.GetDateTimes();
DateTime minimumDateTime = Stateless.Methods.IProperty.GetMinimumDateTime(item.Property); DateTime minimumDateTime = Stateless.Methods.IProperty.GetMinimumDateTime(item.Property);
(bool? isWrongYear, _) = Stateless.Methods.IProperty.IsWrongYear(item.ImageFileHolder, item.Property.DateTimeOriginal, dateTimes); (bool? isWrongYear, _) = Stateless.Methods.IProperty.IsWrongYear(item.ImageFileHolder, item.Property.DateTimeOriginal, dateTimes);
result = new(containerDateTimes, item.Property.DateTimeDigitized, item.Property.DateTimeOriginal, item.Property.Id.Value, item.ImageFileHolder, isWrongYear, item.Property.Keywords ?? Array.Empty<string>(), minimumDateTime, item.Property.Model, item.RelativePath, resizedFileHolder); result = new(containerDateTimes, item.Property.DateTimeDigitized, item.Property.DateTimeOriginal, item.Property.Id.Value, item.ImageFileHolder, isWrongYear, item.Property.Keywords ?? [], minimumDateTime, item.Property.Model, item.RelativePath, resizedFileHolder);
return result; return result;
} }

View File

@ -27,15 +27,15 @@ public class PersonContainer : Properties.IPersonContainer
} }
public PersonContainer(char[] personCharacters, PersonBirthday birthday, string displayDirectoryName, PersonDirectory personDirectory) : public PersonContainer(char[] personCharacters, PersonBirthday birthday, string displayDirectoryName, PersonDirectory personDirectory) :
this(Stateless.Methods.IAge.GetApproximateYears(personCharacters, displayDirectoryName), new PersonBirthday[] { birthday }, Array.Empty<string>(), displayDirectoryName, birthday.Value.Ticks, personDirectory) this(Stateless.Methods.IAge.GetApproximateYears(personCharacters, displayDirectoryName), [birthday], [], displayDirectoryName, birthday.Value.Ticks, personDirectory)
{ } { }
public PersonContainer(int? approximateYears, PersonBirthday birthdays, string displayDirectoryName, long key) : public PersonContainer(int? approximateYears, PersonBirthday birthdays, string displayDirectoryName, long key) :
this(approximateYears, new PersonBirthday[] { birthdays }, Array.Empty<string>(), displayDirectoryName, key, null) this(approximateYears, [birthdays], [], displayDirectoryName, key, null)
{ } { }
public PersonContainer(int? approximateYears, PersonBirthday birthdays, PersonDirectory? personDirectory, string displayDirectoryName, long key) : public PersonContainer(int? approximateYears, PersonBirthday birthdays, PersonDirectory? personDirectory, string displayDirectoryName, long key) :
this(approximateYears, new PersonBirthday[] { birthdays }, Array.Empty<string>(), displayDirectoryName, key, personDirectory) this(approximateYears, [birthdays], [], displayDirectoryName, key, personDirectory)
{ } { }
public PersonContainer(int? approximateYears, string[] displayDirectoryAllFiles, string displayDirectoryName, PersonDirectory? personDirectory) : public PersonContainer(int? approximateYears, string[] displayDirectoryAllFiles, string displayDirectoryName, PersonDirectory? personDirectory) :

View File

@ -19,15 +19,15 @@ internal abstract class Container
else else
containerMaximumDateTime = (from l in items select l.ImageFileHolder.LastWriteTime).Max(); containerMaximumDateTime = (from l in items select l.ImageFileHolder.LastWriteTime).Max();
if (containerMinimumDateTime is null || containerMaximumDateTime is null) if (containerMinimumDateTime is null || containerMaximumDateTime is null)
results = Array.Empty<DateTime>(); results = [];
else else
results = new DateTime[] { containerMinimumDateTime.Value, containerMaximumDateTime.Value }; results = [containerMinimumDateTime.Value, containerMaximumDateTime.Value];
return results; return results;
} }
internal static Models.Item[] GetFilterItems(Properties.IPropertyConfiguration propertyConfiguration, Models.Container container) internal static Models.Item[] GetFilterItems(Properties.IPropertyConfiguration propertyConfiguration, Models.Container container)
{ {
List<Models.Item> results = new(); List<Models.Item> results = [];
foreach (Models.Item item in container.Items) foreach (Models.Item item in container.Items)
{ {
if (item.ImageFileHolder is not null if (item.ImageFileHolder is not null
@ -68,7 +68,7 @@ internal abstract class Container
string pathDirectoryName = Path.GetFileName(Path.GetDirectoryName(filePair.Path) ?? filePair.Path); string pathDirectoryName = Path.GetFileName(Path.GetDirectoryName(filePair.Path) ?? filePair.Path);
string? alternateFile = alternateFilesCollectionDirectory is null ? null : Path.Combine(alternateFilesCollectionDirectory, pathDirectoryName, $"{Path.GetFileName(filePair.Path)}.tsv"); string? alternateFile = alternateFilesCollectionDirectory is null ? null : Path.Combine(alternateFilesCollectionDirectory, pathDirectoryName, $"{Path.GetFileName(filePair.Path)}.tsv");
if (!File.Exists(alternateFile)) if (!File.Exists(alternateFile))
results = Array.Empty<string>(); results = [];
else else
results = File.ReadAllLines(alternateFile); results = File.ReadAllLines(alternateFile);
return results; return results;
@ -79,24 +79,24 @@ internal abstract class Container
string[] results; string[] results;
Models.Property? result; Models.Property? result;
if (filePair.Match is null) if (filePair.Match is null)
(result, results) = (null, Array.Empty<string>()); (result, results) = (null, []);
else else
{ {
string json = File.ReadAllText(filePair.Match); string json = File.ReadAllText(filePair.Match);
if (string.IsNullOrEmpty(json)) if (string.IsNullOrEmpty(json))
(result, results) = (null, Array.Empty<string>()); (result, results) = (null, []);
else else
{ {
result = JsonSerializer.Deserialize(json, PropertyGenerationContext.Default.Property); result = JsonSerializer.Deserialize(json, PropertyGenerationContext.Default.Property);
if (result is null) if (result is null)
results = Array.Empty<string>(); results = [];
else else
{ {
results = alternateFilesCollectionDirectory is null ? Array.Empty<string>() : GetAlternateFileLines(alternateFilesCollectionDirectory, filePair); results = alternateFilesCollectionDirectory is null ? [] : GetAlternateFileLines(alternateFilesCollectionDirectory, filePair);
if (results.Any(l => l.Contains('!'))) if (results.Any(l => l.Contains('!')))
{ {
if (result.Keywords is null) if (result.Keywords is null)
result = Models.Property.GetProperty(result, new string[] { "!" }); result = Models.Property.GetProperty(result, ["!"]);
else else
result = Models.Property.GetProperty(result, result.Keywords.Concat(new string[] { "!" }).ToArray()); result = Models.Property.GetProperty(result, result.Keywords.Concat(new string[] { "!" }).ToArray());
} }
@ -139,7 +139,7 @@ internal abstract class Container
private static List<FilePair> GetFilePairs(Properties.IPropertyConfiguration propertyConfiguration, string aPropertySingletonDirectory, string filesCollectionDirectory, string extension, List<Models.FilePair> filePairs) private static List<FilePair> GetFilePairs(Properties.IPropertyConfiguration propertyConfiguration, string aPropertySingletonDirectory, string filesCollectionDirectory, string extension, List<Models.FilePair> filePairs)
{ {
List<FilePair> results = new(); List<FilePair> results = [];
int maxDegreeOfParallelism = Environment.ProcessorCount; int maxDegreeOfParallelism = Environment.ProcessorCount;
string? alternateResultAllInOne = !propertyConfiguration.ResultAllInOne.Contains(' ') ? null : propertyConfiguration.ResultAllInOne.Replace(' ', '-'); string? alternateResultAllInOne = !propertyConfiguration.ResultAllInOne.Contains(' ') ? null : propertyConfiguration.ResultAllInOne.Replace(' ', '-');
string? alternateFilesCollectionDirectory = alternateResultAllInOne is null ? null : Path.Combine(Path.GetDirectoryName(filesCollectionDirectory) ?? filesCollectionDirectory, alternateResultAllInOne); string? alternateFilesCollectionDirectory = alternateResultAllInOne is null ? null : Path.Combine(Path.GetDirectoryName(filesCollectionDirectory) ?? filesCollectionDirectory, alternateResultAllInOne);
@ -151,13 +151,13 @@ internal abstract class Container
private static (int, Models.Container[]) GetContainers(Properties.IPropertyConfiguration propertyConfiguration, string aPropertySingletonDirectory, string filesCollectionDirectory, List<string[]> filesCollection, string directorySearchFilter) private static (int, Models.Container[]) GetContainers(Properties.IPropertyConfiguration propertyConfiguration, string aPropertySingletonDirectory, string filesCollectionDirectory, List<string[]> filesCollection, string directorySearchFilter)
{ {
List<Models.Container> results = new(); List<Models.Container> results = [];
string? directory; string? directory;
List<Models.Item>? items; List<Models.Item>? items;
Models.Container container; Models.Container container;
const string extension = ".json"; const string extension = ".json";
List<string> directories = new(); List<string> directories = [];
Dictionary<string, List<Models.Item>> directoryToItems = new(); Dictionary<string, List<Models.Item>> directoryToItems = [];
foreach (string[] files in filesCollection) foreach (string[] files in filesCollection)
{ {
if (files.Length == 0) if (files.Length == 0)
@ -169,7 +169,7 @@ internal abstract class Container
directories.Add(directory); directories.Add(directory);
if (!directoryToItems.TryGetValue(directory, out items)) if (!directoryToItems.TryGetValue(directory, out items))
{ {
directoryToItems.Add(directory, new()); directoryToItems.Add(directory, []);
if (!directoryToItems.TryGetValue(directory, out items)) if (!directoryToItems.TryGetValue(directory, out items))
throw new Exception(); throw new Exception();
} }
@ -182,7 +182,7 @@ internal abstract class Container
continue; continue;
if (!directoryToItems.TryGetValue(filePair.Directory, out items)) if (!directoryToItems.TryGetValue(filePair.Directory, out items))
{ {
directoryToItems.Add(filePair.Directory, new()); directoryToItems.Add(filePair.Directory, []);
if (!directoryToItems.TryGetValue(filePair.Directory, out items)) if (!directoryToItems.TryGetValue(filePair.Directory, out items))
throw new Exception(); throw new Exception();
} }
@ -221,7 +221,7 @@ internal abstract class Container
internal static List<int> GetFilteredDistinctIds(Properties.IPropertyConfiguration propertyConfiguration, Models.Container[] containers) internal static List<int> GetFilteredDistinctIds(Properties.IPropertyConfiguration propertyConfiguration, Models.Container[] containers)
{ {
List<int> results = new(); List<int> results = [];
Models.Item[] filteredItems; Models.Item[] filteredItems;
foreach (Models.Container container in containers) foreach (Models.Container container in containers)
{ {
@ -244,8 +244,8 @@ internal abstract class Container
internal static ReadOnlyCollection<Models.Item> GetItems(Properties.IPropertyConfiguration propertyConfiguration, ReadOnlyCollection<Models.Container> containers, bool distinctItems, bool filterItems) internal static ReadOnlyCollection<Models.Item> GetItems(Properties.IPropertyConfiguration propertyConfiguration, ReadOnlyCollection<Models.Container> containers, bool distinctItems, bool filterItems)
{ {
List<Models.Item> results = new(); List<Models.Item> results = [];
List<int> distinct = new(); List<int> distinct = [];
IEnumerable<Models.Item> filteredItems; IEnumerable<Models.Item> filteredItems;
foreach (Models.Container container in containers) foreach (Models.Container container in containers)
{ {

View File

@ -37,7 +37,7 @@ internal abstract class Face
private static List<Models.Face> GetFaces(string jsonFileFullName, int? maximum) private static List<Models.Face> GetFaces(string jsonFileFullName, int? maximum)
{ {
List<Models.Face> results = new(); List<Models.Face> results = [];
Tuple<Models.Face, string>? tuple; Tuple<Models.Face, string>? tuple;
JsonElement[] jsonElements = GetJsonElements(jsonFileFullName); JsonElement[] jsonElements = GetJsonElements(jsonFileFullName);
foreach (JsonElement jsonElement in jsonElements) foreach (JsonElement jsonElement in jsonElements)
@ -133,7 +133,7 @@ internal abstract class Face
internal static (bool, int[]) GetEyeCollection(int threshold, List<Models.Face> faces) internal static (bool, int[]) GetEyeCollection(int threshold, List<Models.Face> faces)
{ {
bool result = false; bool result = false;
List<int> results = new(); List<int> results = [];
foreach (Models.Face face in faces) foreach (Models.Face face in faces)
{ {
if (face.Mapping?.MappingFromLocation?.Eyeα is null || face.Mapping.MappingFromLocation.EyeReview is null) if (face.Mapping?.MappingFromLocation?.Eyeα is null || face.Mapping.MappingFromLocation.EyeReview is null)

View File

@ -44,7 +44,7 @@ internal abstract class FaceFileSystem
internal static Models.FaceFileSystem[] GetFaceFileSystemCollection(string requestPath, (string RootResultsDirectoryAbsoluteUri, string C_ResizeContentDirectory, string D_FacesContentDirectory, string E_DistanceCollectionDirectory) tuple, string selectedFileFullName) internal static Models.FaceFileSystem[] GetFaceFileSystemCollection(string requestPath, (string RootResultsDirectoryAbsoluteUri, string C_ResizeContentDirectory, string D_FacesContentDirectory, string E_DistanceCollectionDirectory) tuple, string selectedFileFullName)
{ {
List<Models.FaceFileSystem> results = new(); List<Models.FaceFileSystem> results = [];
FileInfo fileInfo; FileInfo fileInfo;
int? locationIndex; int? locationIndex;
string jsonFileName; string jsonFileName;

View File

@ -5,7 +5,7 @@ internal abstract class FileHolder
internal static List<Models.FileHolder> GetFileHolders((string, string[])[] collection) internal static List<Models.FileHolder> GetFileHolders((string, string[])[] collection)
{ {
List<Models.FileHolder> results = new(); List<Models.FileHolder> results = [];
foreach ((string _, string[] files) in collection) foreach ((string _, string[] files) in collection)
results.AddRange(files.Select(l => new Models.FileHolder(l))); results.AddRange(files.Select(l => new Models.FileHolder(l)));
return results; return results;

View File

@ -42,11 +42,11 @@ internal abstract class FileSystem
internal static List<Models.FileSystem> GetFileSystemCollection(string requestPath, (string RootResultsDirectoryAbsoluteUri, string C_ResizeContentDirectory, string D_FacesContentDirectory, string E_DistanceCollectionDirectory) tuple, string[] directories, string[] files, bool all) internal static List<Models.FileSystem> GetFileSystemCollection(string requestPath, (string RootResultsDirectoryAbsoluteUri, string C_ResizeContentDirectory, string D_FacesContentDirectory, string E_DistanceCollectionDirectory) tuple, string[] directories, string[] files, bool all)
{ {
List<Models.FileSystem> results = new(); List<Models.FileSystem> results = [];
Models.Face face; Models.Face face;
Models.FaceFileSystem faceFileSystem; Models.FaceFileSystem faceFileSystem;
IEnumerator<string> subDirectoryFiles; IEnumerator<string> subDirectoryFiles;
List<Models.FaceFileSystem> faceFileSystemCollection = new(); List<Models.FaceFileSystem> faceFileSystemCollection = [];
for (int i = 0; i < directories.Length; i++) for (int i = 0; i < directories.Length; i++)
{ {
subDirectoryFiles = Directory.EnumerateFiles(directories[i], "*.json", SearchOption.TopDirectoryOnly).GetEnumerator(); subDirectoryFiles = Directory.EnumerateFiles(directories[i], "*.json", SearchOption.TopDirectoryOnly).GetEnumerator();

View File

@ -11,6 +11,6 @@ public interface IMappingFromItem
MappingFromItem TestStatic_GetMappingFromItem(Models.Item item) MappingFromItem TestStatic_GetMappingFromItem(Models.Item item)
=> GetMappingFromItem(item); => GetMappingFromItem(item);
static MappingFromItem GetMappingFromItem(Models.Item item) static MappingFromItem GetMappingFromItem(Models.Item item)
=> GetMappingFromItem(containerDateTimes: Array.Empty<DateTime>(), item, item.ResizedFileHolder); => GetMappingFromItem(containerDateTimes: [], item, item.ResizedFileHolder);
} }

View File

@ -5,8 +5,8 @@ internal abstract class Item
internal static List<Models.Item> GetMerged(List<Models.Item> itemsA, List<Models.Item> itemsB) internal static List<Models.Item> GetMerged(List<Models.Item> itemsA, List<Models.Item> itemsB)
{ {
List<Models.Item> results = new(); List<Models.Item> results = [];
List<string> collection = new(); List<string> collection = [];
foreach (Models.Item item in itemsA) foreach (Models.Item item in itemsA)
{ {
results.Add(item); results.Add(item);

View File

@ -124,14 +124,14 @@ internal abstract class Location
{ {
RectangleF? result; RectangleF? result;
int length = (locationDigits - 1) / 4; int length = (locationDigits - 1) / 4;
string[] segments = new string[] string[] segments =
{ [
wholePercentages[..1], wholePercentages[..1],
wholePercentages.Substring(1, length), wholePercentages.Substring(1, length),
wholePercentages.Substring(3, length), wholePercentages.Substring(3, length),
wholePercentages.Substring(5, length), wholePercentages.Substring(5, length),
wholePercentages.Substring(7, length) wholePercentages.Substring(7, length)
}; ];
if (string.Join(string.Empty, segments) != wholePercentages) if (string.Join(string.Empty, segments) != wholePercentages)
result = null; result = null;
else else
@ -247,7 +247,7 @@ internal abstract class Location
internal static List<Models.Location> GetLocations<T>(List<LocationContainer<T>> locationContainers, List<Models.Face> faces, List<MappingFromPhotoPrism> mappingFromPhotoPrismCollection, float rectangleIntersectMinimum) internal static List<Models.Location> GetLocations<T>(List<LocationContainer<T>> locationContainers, List<Models.Face> faces, List<MappingFromPhotoPrism> mappingFromPhotoPrismCollection, float rectangleIntersectMinimum)
{ {
List<Models.Location> results = new(); List<Models.Location> results = [];
bool any; bool any;
bool matches; bool matches;
float? percent; float? percent;
@ -331,7 +331,7 @@ internal abstract class Location
internal static List<Models.Face> FilterByIntersect(Models.Face[] faces, float rectangleIntersectMinimum, int wholePercentages) internal static List<Models.Face> FilterByIntersect(Models.Face[] faces, float rectangleIntersectMinimum, int wholePercentages)
{ {
List<Models.Face> results = new(); List<Models.Face> results = [];
float? percent; float? percent;
int width, height; int width, height;
int faceLocationWholePercentages; int faceLocationWholePercentages;

View File

@ -89,7 +89,7 @@ internal abstract class PersonBirthday
internal static List<(string, Models.PersonBirthday)> GetPersonBirthdays(string personBirthdayFormat, string[] personKeyDirectories, string personDisplayDirectoryName) internal static List<(string, Models.PersonBirthday)> GetPersonBirthdays(string personBirthdayFormat, string[] personKeyDirectories, string personDisplayDirectoryName)
{ {
List<(string, Models.PersonBirthday)> results = new(); List<(string, Models.PersonBirthday)> results = [];
string personKeyFormatted; string personKeyFormatted;
Models.PersonBirthday? personBirthday; Models.PersonBirthday? personBirthday;
foreach (string personKeyDirectory in personKeyDirectories) foreach (string personKeyDirectory in personKeyDirectories)

View File

@ -5,12 +5,12 @@ internal abstract class PersonContainer
private static List<string> GetFiles(string personDisplayDirectory) private static List<string> GetFiles(string personDisplayDirectory)
{ {
List<string> results = new(); List<string> results = [];
string[] files; string[] files;
string extension; string extension;
string checkFile; string checkFile;
string directoryName; string directoryName;
List<string> distinct = new(); List<string> distinct = [];
string fileNameWithoutExtension; string fileNameWithoutExtension;
string personDisplayDirectoryName = Path.GetFileName(personDisplayDirectory); string personDisplayDirectoryName = Path.GetFileName(personDisplayDirectory);
results.AddRange(Directory.GetFiles(personDisplayDirectory, "*", SearchOption.TopDirectoryOnly)); results.AddRange(Directory.GetFiles(personDisplayDirectory, "*", SearchOption.TopDirectoryOnly));
@ -92,7 +92,7 @@ internal abstract class PersonContainer
private static List<Models.PersonContainer> GetPersonContainersCollections(string facesFileNameExtension, PersonDirectory personDirectory, char numberSign, string personDisplayDirectory, string personDisplayDirectoryName, int? approximateYears, List<(string PersonKeyFormatted, Models.PersonBirthday PersonBirthday)> collection) private static List<Models.PersonContainer> GetPersonContainersCollections(string facesFileNameExtension, PersonDirectory personDirectory, char numberSign, string personDisplayDirectory, string personDisplayDirectoryName, int? approximateYears, List<(string PersonKeyFormatted, Models.PersonBirthday PersonBirthday)> collection)
{ {
List<Models.PersonContainer> results = new(); List<Models.PersonContainer> results = [];
long personKey; long personKey;
string[] files; string[] files;
const int zero = 0; const int zero = 0;
@ -155,11 +155,11 @@ internal abstract class PersonContainer
private static (List<string?>, List<Models.PersonContainer>) GetPersonContainersGroup(string personBirthdayFormat, string facesFileNameExtension, char[] personCharacters, PersonDirectory personDirectory, string[] personDisplayDirectories) private static (List<string?>, List<Models.PersonContainer>) GetPersonContainersGroup(string personBirthdayFormat, string facesFileNameExtension, char[] personCharacters, PersonDirectory personDirectory, string[] personDisplayDirectories)
{ {
List<Models.PersonContainer> results = new(); List<Models.PersonContainer> results = [];
string? minusOne; string? minusOne;
int? approximateYears; int? approximateYears;
char numberSign = '#'; char numberSign = '#';
List<string?> changes = new(); List<string?> changes = [];
string[] personKeyDirectories; string[] personKeyDirectories;
string? personDisplayDirectoryName; string? personDisplayDirectoryName;
Models.PersonContainer personContainer; Models.PersonContainer personContainer;
@ -200,13 +200,13 @@ internal abstract class PersonContainer
private static (List<string?>, List<Models.PersonContainer>) GetPersonContainersInnerGroups(string personBirthdayFormat, string facesFileNameExtension, char[] personCharacters, string groupDirectory, string groupDirectoryName) private static (List<string?>, List<Models.PersonContainer>) GetPersonContainersInnerGroups(string personBirthdayFormat, string facesFileNameExtension, char[] personCharacters, string groupDirectory, string groupDirectoryName)
{ {
List<Models.PersonContainer> results = new(); List<Models.PersonContainer> results = [];
string[] segments; string[] segments;
const int zero = 0; const int zero = 0;
List<string?> changes; List<string?> changes;
string innerGroupDirectoryName; string innerGroupDirectoryName;
PersonDirectory personDirectory; PersonDirectory personDirectory;
List<string?> allChanges = new(); List<string?> allChanges = [];
string[] personDisplayDirectories; string[] personDisplayDirectories;
const char exclamationPoint = '!'; const char exclamationPoint = '!';
char @char = groupDirectoryName[zero]; char @char = groupDirectoryName[zero];
@ -250,9 +250,9 @@ internal abstract class PersonContainer
List<Models.PersonContainer> results; List<Models.PersonContainer> results;
List<string?> changes; List<string?> changes;
string groupDirectoryName; string groupDirectoryName;
List<string?> allChanges = new(); List<string?> allChanges = [];
List<Models.PersonContainer> collection; List<Models.PersonContainer> collection;
List<Models.PersonContainer> personContainers = new(); List<Models.PersonContainer> personContainers = [];
for (int i = 0; i < personCharacters.Length; i++) for (int i = 0; i < personCharacters.Length; i++)
{ {
foreach (string groupDirectory in groupDirectories) foreach (string groupDirectory in groupDirectories)
@ -285,7 +285,7 @@ internal abstract class PersonContainer
} }
string[] groupDirectories = Directory.GetDirectories(a2PeopleSingletonDirectory, "*", SearchOption.TopDirectoryOnly); string[] groupDirectories = Directory.GetDirectories(a2PeopleSingletonDirectory, "*", SearchOption.TopDirectoryOnly);
if (groupDirectories.Length == 0) if (groupDirectories.Length == 0)
results = new(); results = [];
else else
results = GetPersonContainersGroups(personBirthdayFormat, facesFileNameExtension, personCharacters, groupDirectories); results = GetPersonContainersGroups(personBirthdayFormat, facesFileNameExtension, personCharacters, groupDirectories);
return results; return results;
@ -293,7 +293,7 @@ internal abstract class PersonContainer
internal static List<long> GetPersonKeys(IEnumerable<Models.PersonContainer> personContainers) internal static List<long> GetPersonKeys(IEnumerable<Models.PersonContainer> personContainers)
{ {
List<long> results = new(); List<long> results = [];
long personKey; long personKey;
foreach (Models.PersonContainer personContainer in personContainers) foreach (Models.PersonContainer personContainer in personContainers)
{ {

View File

@ -49,12 +49,12 @@ internal abstract class Property
internal static (bool?, string[]) IsWrongYear(Models.FileHolder fileHolder, DateTime? dateTimeOriginal, List<DateTime> dateTimes) internal static (bool?, string[]) IsWrongYear(Models.FileHolder fileHolder, DateTime? dateTimeOriginal, List<DateTime> dateTimes)
{ {
string[] results = Array.Empty<string>(); string[] results = [];
bool? result = null; bool? result = null;
string year; string year;
string directoryName; string directoryName;
string[] directorySegments; string[] directorySegments;
List<DateTime> collection = new(); List<DateTime> collection = [];
string? check = Path.GetFullPath(fileHolder.FullName); string? check = Path.GetFullPath(fileHolder.FullName);
string? pathRoot = Path.GetPathRoot(fileHolder.FullName); string? pathRoot = Path.GetPathRoot(fileHolder.FullName);
if (string.IsNullOrEmpty(pathRoot)) if (string.IsNullOrEmpty(pathRoot))
@ -88,21 +88,16 @@ internal abstract class Property
internal static List<DateTime> GetDateTimes(DateTime creationTime, DateTime lastWriteTime, DateTime? dateTime, DateTime? dateTimeDigitized, DateTime? dateTimeFromName, DateTime? dateTimeOriginal, DateTime? gpsDateStamp) internal static List<DateTime> GetDateTimes(DateTime creationTime, DateTime lastWriteTime, DateTime? dateTime, DateTime? dateTimeDigitized, DateTime? dateTimeFromName, DateTime? dateTimeOriginal, DateTime? gpsDateStamp)
{ {
List<DateTime> results = new() List<DateTime> results =
{ [
creationTime, creationTime,
lastWriteTime lastWriteTime,
}; .. dateTime.HasValue ? [dateTime.Value] : [],
if (dateTime.HasValue) .. dateTimeDigitized.HasValue ? [dateTimeDigitized.Value] : [],
results.Add(dateTime.Value); .. dateTimeFromName.HasValue ? [dateTimeFromName.Value] : [],
if (dateTimeDigitized.HasValue) .. dateTimeOriginal.HasValue ? [dateTimeOriginal.Value] : [],
results.Add(dateTimeDigitized.Value); .. gpsDateStamp.HasValue ? [gpsDateStamp.Value] : [],
if (dateTimeFromName.HasValue) ];
results.Add(dateTimeFromName.Value);
if (dateTimeOriginal.HasValue)
results.Add(dateTimeOriginal.Value);
if (gpsDateStamp.HasValue)
results.Add(gpsDateStamp.Value);
return results; return results;
} }
@ -113,21 +108,16 @@ internal abstract class Property
result = DateTime.MinValue; result = DateTime.MinValue;
else else
{ {
List<DateTime> dateTimes = new() List<DateTime> dateTimes =
{ [
property.CreationTime, property.CreationTime,
property.LastWriteTime property.LastWriteTime,
}; .. property.DateTime.HasValue ? [property.DateTime.Value] : [],
if (property.DateTime.HasValue) .. property.DateTimeDigitized.HasValue ? [property.DateTimeDigitized.Value] : [],
dateTimes.Add(property.DateTime.Value); .. property.DateTimeFromName.HasValue ? [property.DateTimeFromName.Value] : [],
if (property.DateTimeDigitized.HasValue) .. property.DateTimeOriginal.HasValue ? [property.DateTimeOriginal.Value] : [],
dateTimes.Add(property.DateTimeDigitized.Value); .. property.GPSDateStamp.HasValue ? [property.GPSDateStamp.Value] : [],
if (property.DateTimeFromName.HasValue) ];
dateTimes.Add(property.DateTimeFromName.Value);
if (property.DateTimeOriginal.HasValue)
dateTimes.Add(property.DateTimeOriginal.Value);
if (property.GPSDateStamp.HasValue)
dateTimes.Add(property.GPSDateStamp.Value);
result = dateTimes.Min(); result = dateTimes.Min();
} }
return result; return result;
@ -191,7 +181,7 @@ internal abstract class Property
{ {
TimeSpan result; TimeSpan result;
DateTime? minimumDateTime; DateTime? minimumDateTime;
List<long> ticksCollection = new(); List<long> ticksCollection = [];
foreach (Models.Item item in container.Items) foreach (Models.Item item in container.Items)
{ {
if (item.Property is null) if (item.Property is null)
@ -217,7 +207,7 @@ internal abstract class Property
internal static (int, List<DateTime>, List<Models.Item>) Get(Models.Container container, TimeSpan threeStandardDeviationHigh, int i) internal static (int, List<DateTime>, List<Models.Item>) Get(Models.Container container, TimeSpan threeStandardDeviationHigh, int i)
{ {
List<Models.Item> results = new(); List<Models.Item> results = [];
int j = i; int j = i;
long? ticks; long? ticks;
Models.Item item; Models.Item item;
@ -225,7 +215,7 @@ internal abstract class Property
Models.Item nextItem; Models.Item nextItem;
DateTime? minimumDateTime; DateTime? minimumDateTime;
DateTime? nextMinimumDateTime; DateTime? nextMinimumDateTime;
List<DateTime> dateTimes = new(); List<DateTime> dateTimes = [];
for (; j < container.Items.Count; j++) for (; j < container.Items.Count; j++)
{ {
ticks = null; ticks = null;

View File

@ -9,15 +9,15 @@ internal abstract class WorkingDirectory
if (executingAssemblyName is null) if (executingAssemblyName is null)
throw new Exception(); throw new Exception();
string traceFile; string traceFile;
List<string> directories = new(); List<string> directories = [];
Environment.SpecialFolder[] specialFolders = new Environment.SpecialFolder[] Environment.SpecialFolder[] specialFolders =
{ [
Environment.SpecialFolder.LocalApplicationData, Environment.SpecialFolder.LocalApplicationData,
Environment.SpecialFolder.ApplicationData, Environment.SpecialFolder.ApplicationData,
Environment.SpecialFolder.History, Environment.SpecialFolder.History,
Environment.SpecialFolder.CommonApplicationData, Environment.SpecialFolder.CommonApplicationData,
Environment.SpecialFolder.InternetCache Environment.SpecialFolder.InternetCache
}; ];
foreach (Environment.SpecialFolder specialFolder in specialFolders) foreach (Environment.SpecialFolder specialFolder in specialFolders)
directories.Add(Path.Combine(Environment.GetFolderPath(specialFolder), subDirectoryName, executingAssemblyName)); directories.Add(Path.Combine(Environment.GetFolderPath(specialFolder), subDirectoryName, executingAssemblyName));
foreach (string directory in directories) foreach (string directory in directories)

View File

@ -7,7 +7,7 @@ internal abstract partial class XDirectory
private static int GetCeilingAverage(List<string[]> fileCollection) private static int GetCeilingAverage(List<string[]> fileCollection)
{ {
List<int> counts = new(); List<int> counts = [];
foreach (string[] files in fileCollection) foreach (string[] files in fileCollection)
counts.Add(files.Length); counts.Add(files.Length);
int average = (int)Math.Ceiling(counts.Average()); int average = (int)Math.Ceiling(counts.Average());
@ -16,7 +16,7 @@ internal abstract partial class XDirectory
private static List<string[]> GetFilesCollection(List<string[]> fileCollection, int ceilingAverage) private static List<string[]> GetFilesCollection(List<string[]> fileCollection, int ceilingAverage)
{ {
List<string[]> results = new(); List<string[]> results = [];
foreach (string[] files in fileCollection) foreach (string[] files in fileCollection)
{ {
if (files.Length < ceilingAverage) if (files.Length < ceilingAverage)
@ -32,7 +32,7 @@ internal abstract partial class XDirectory
internal static List<string[]> GetFilesCollection(string directory, string directorySearchFilter, string fileSearchFilter, bool useCeilingAverage) internal static List<string[]> GetFilesCollection(string directory, string directorySearchFilter, string fileSearchFilter, bool useCeilingAverage)
{ {
List<string[]> results = new(); List<string[]> results = [];
if (!fileSearchFilter.Contains('*')) if (!fileSearchFilter.Contains('*'))
fileSearchFilter = string.Concat('*', fileSearchFilter); fileSearchFilter = string.Concat('*', fileSearchFilter);
if (!directorySearchFilter.Contains('*')) if (!directorySearchFilter.Contains('*'))
@ -54,7 +54,7 @@ internal abstract partial class XDirectory
internal static IReadOnlyDictionary<string, List<string>> GetFilesKeyValuePairs(List<string[]> filesCollection) internal static IReadOnlyDictionary<string, List<string>> GetFilesKeyValuePairs(List<string[]> filesCollection)
{ {
Dictionary<string, List<string>> results = new(); Dictionary<string, List<string>> results = [];
string fileName; string fileName;
List<string>? collection; List<string>? collection;
foreach (string[] files in filesCollection) foreach (string[] files in filesCollection)
@ -64,7 +64,7 @@ internal abstract partial class XDirectory
fileName = Path.GetFileName(file); fileName = Path.GetFileName(file);
if (!results.TryGetValue(fileName, out collection)) if (!results.TryGetValue(fileName, out collection))
{ {
results.Add(fileName, new()); results.Add(fileName, []);
if (!results.TryGetValue(fileName, out collection)) if (!results.TryGetValue(fileName, out collection))
throw new Exception(); throw new Exception();
} }
@ -81,7 +81,7 @@ internal abstract partial class XDirectory
List<string>? collection; List<string>? collection;
string fileNameUpperExtension; string fileNameUpperExtension;
int length = extension.Length; int length = extension.Length;
List<string> renameCollection = new(); List<string> renameCollection = [];
foreach (string[] files in jsonFilesCollection) foreach (string[] files in jsonFilesCollection)
{ {
foreach (string file in files) foreach (string file in files)
@ -127,10 +127,10 @@ internal abstract partial class XDirectory
{ {
string? result = null; string? result = null;
FileInfo possibleFileInfo; FileInfo possibleFileInfo;
List<long> lengths = new(); List<long> lengths = [];
List<string> matches = new(); List<string> matches = [];
FileInfo fileInfo = new(file); FileInfo fileInfo = new(file);
List<DateTime> creationTimes = new(); List<DateTime> creationTimes = [];
foreach (string possible in collection) foreach (string possible in collection)
{ {
possibleFileInfo = new(possible); possibleFileInfo = new(possible);
@ -147,7 +147,7 @@ internal abstract partial class XDirectory
internal static List<FilePair> GetFiles(List<string[]> filesCollection, IReadOnlyDictionary<string, List<string>> fileNamesToFiles, string extension, IReadOnlyDictionary<string, List<string>> compareFileNamesToFiles) internal static List<FilePair> GetFiles(List<string[]> filesCollection, IReadOnlyDictionary<string, List<string>> fileNamesToFiles, string extension, IReadOnlyDictionary<string, List<string>> compareFileNamesToFiles)
{ {
List<FilePair> results = new(); List<FilePair> results = [];
string? match; string? match;
string fileName; string fileName;
bool uniqueFileName; bool uniqueFileName;
@ -165,7 +165,7 @@ internal abstract partial class XDirectory
if (!uniqueFileName) if (!uniqueFileName)
isNotUniqueAndNeedsReview = GetIsNotUniqueAndNeedsReview(file, collection); isNotUniqueAndNeedsReview = GetIsNotUniqueAndNeedsReview(file, collection);
if (!compareFileNamesToFiles.TryGetValue(string.Concat(fileName, extension), out collection)) if (!compareFileNamesToFiles.TryGetValue(string.Concat(fileName, extension), out collection))
results.Add(new(file, uniqueFileName, isNotUniqueAndNeedsReview, new(), null)); results.Add(new(file, uniqueFileName, isNotUniqueAndNeedsReview, [], null));
else else
{ {
if (collection.Count == 0) if (collection.Count == 0)
@ -215,7 +215,7 @@ internal abstract partial class XDirectory
FileInfo? toFileInfo; FileInfo? toFileInfo;
FileInfo fromFileInfo; FileInfo fromFileInfo;
string checkDirectory; string checkDirectory;
List<(string, string)> rename = new(); List<(string, string)> rename = [];
string resultAllInOneDirectory = Path.Combine(jsonGroupDirectory, resultAllInOne); string resultAllInOneDirectory = Path.Combine(jsonGroupDirectory, resultAllInOne);
foreach (FilePair item in filePairs) foreach (FilePair item in filePairs)
{ {
@ -256,7 +256,7 @@ internal abstract partial class XDirectory
{ {
string checkFile; string checkFile;
string? checkDirectory; string? checkDirectory;
List<string> directories = new(); List<string> directories = [];
foreach (string file in files) foreach (string file in files)
{ {
checkDirectory = Path.GetDirectoryName(file.Replace(find, replace)); checkDirectory = Path.GetDirectoryName(file.Replace(find, replace));
@ -321,7 +321,7 @@ internal abstract partial class XDirectory
private static SortedRecord[] GetSortedRecords(int offset, List<string[]> filesCollection) private static SortedRecord[] GetSortedRecords(int offset, List<string[]> filesCollection)
{ {
List<SortedRecord> results = new(); List<SortedRecord> results = [];
int? id; int? id;
Models.FileHolder fileHolder; Models.FileHolder fileHolder;
bool nameWithoutExtensionIsIdFormat; bool nameWithoutExtensionIsIdFormat;
@ -340,7 +340,7 @@ internal abstract partial class XDirectory
internal static (string[], List<(Models.FileHolder, string?, string)>) GetToDoCollection(Properties.IPropertyConfiguration propertyConfiguration, bool copyDuplicates, bool ifCanUseId, List<string[]> filesCollection, string[] directories, Action? tick) internal static (string[], List<(Models.FileHolder, string?, string)>) GetToDoCollection(Properties.IPropertyConfiguration propertyConfiguration, bool copyDuplicates, bool ifCanUseId, List<string[]> filesCollection, string[] directories, Action? tick)
{ {
List<(Models.FileHolder, string?, string)> results = new(); List<(Models.FileHolder, string?, string)> results = [];
string paddedId; string paddedId;
string checkFile; string checkFile;
string directory; string directory;
@ -355,9 +355,9 @@ internal abstract partial class XDirectory
string? alternateCheckFile; string? alternateCheckFile;
string? alternateDirectory; string? alternateDirectory;
Models.FileHolder fileHolder; Models.FileHolder fileHolder;
List<int> distinctIds = new(); List<int> distinctIds = [];
List<string> distinct = new(); List<string> distinct = [];
List<string> distinctDirectories = new(); List<string> distinctDirectories = [];
int intMinValueLength = int.MinValue.ToString().Length; int intMinValueLength = int.MinValue.ToString().Length;
SortedRecord[] sortedRecords = GetSortedRecords(propertyConfiguration.Offset, filesCollection); SortedRecord[] sortedRecords = GetSortedRecords(propertyConfiguration.Offset, filesCollection);
string? alternateResultAllInOne = !propertyConfiguration.ResultAllInOne.Contains(' ') ? null : propertyConfiguration.ResultAllInOne.Replace(' ', '-'); string? alternateResultAllInOne = !propertyConfiguration.ResultAllInOne.Contains(' ') ? null : propertyConfiguration.ResultAllInOne.Replace(' ', '-');
@ -456,7 +456,7 @@ internal abstract partial class XDirectory
internal static List<string> CopyOrMove(List<(Models.FileHolder, string?, string)> toDoCollection, bool move, bool moveBack, Action? tick) internal static List<string> CopyOrMove(List<(Models.FileHolder, string?, string)> toDoCollection, bool move, bool moveBack, Action? tick)
{ {
List<string> results = new(); List<string> results = [];
FileInfo fileInfo; FileInfo fileInfo;
foreach ((Models.FileHolder fileHolder, string? alternateFile, string to) in toDoCollection) foreach ((Models.FileHolder fileHolder, string? alternateFile, string to) in toDoCollection)
{ {

View File

@ -30,7 +30,7 @@ internal abstract class XPath
internal static bool DeleteEmptyDirectories(string rootDirectory) internal static bool DeleteEmptyDirectories(string rootDirectory)
{ {
bool result; bool result;
List<string> results = new(); List<string> results = [];
DeleteEmptyDirectories(rootDirectory, results); DeleteEmptyDirectories(rootDirectory, results);
result = results.Count > 0; result = results.Count > 0;
return result; return result;
@ -43,7 +43,7 @@ internal abstract class XPath
string[] files; string[] files;
string[] directories = Directory.GetDirectories(rootDirectory, "*", SearchOption.TopDirectoryOnly); string[] directories = Directory.GetDirectories(rootDirectory, "*", SearchOption.TopDirectoryOnly);
if (directories.Length > 0) if (directories.Length > 0)
files = Array.Empty<string>(); files = [];
else else
files = Directory.GetFiles(rootDirectory, "*", SearchOption.AllDirectories); files = Directory.GetFiles(rootDirectory, "*", SearchOption.AllDirectories);
if (directories.Length == 0 && files.Length == 0) if (directories.Length == 0 && files.Length == 0)
@ -59,7 +59,7 @@ internal abstract class XPath
} }
else else
{ {
List<string> check = new(); List<string> check = [];
foreach (string directory in directories) foreach (string directory in directories)
{ {
DeleteEmptyDirectories(directory, check); DeleteEmptyDirectories(directory, check);
@ -112,7 +112,7 @@ internal abstract class XPath
internal static List<string> GetDirectoryNames(string directory) internal static List<string> GetDirectoryNames(string directory)
{ {
List<string> results = new(); List<string> results = [];
string? fileName; string? fileName;
string? checkDirectory = directory; string? checkDirectory = directory;
string? pathRoot = Path.GetPathRoot(directory); string? pathRoot = Path.GetPathRoot(directory);
@ -148,7 +148,7 @@ internal abstract class XPath
internal static List<string> GetDirectories(string directory) internal static List<string> GetDirectories(string directory)
{ {
List<string> results = new(); List<string> results = [];
string? checkDirectory = directory; string? checkDirectory = directory;
string? pathRoot = Path.GetPathRoot(directory); string? pathRoot = Path.GetPathRoot(directory);
if (string.IsNullOrEmpty(pathRoot)) if (string.IsNullOrEmpty(pathRoot))
@ -172,7 +172,7 @@ internal abstract class XPath
int result = 0; int result = 0;
string? directory; string? directory;
string? checkDirectory; string? checkDirectory;
List<string> results = new(); List<string> results = [];
checkDirectory = sourceDirectory; checkDirectory = sourceDirectory;
for (int i = 0; i < int.MaxValue; i++) for (int i = 0; i < int.MaxValue; i++)
{ {
@ -211,7 +211,7 @@ internal abstract class XPath
IEnumerable<string> fileSystemEntries; IEnumerable<string> fileSystemEntries;
string[] directories; string[] directories;
if (!Directory.Exists(rootDirectory)) if (!Directory.Exists(rootDirectory))
directories = Array.Empty<string>(); directories = [];
else else
directories = Directory.GetDirectories(rootDirectory, "*", SearchOption.AllDirectories); directories = Directory.GetDirectories(rootDirectory, "*", SearchOption.AllDirectories);
foreach (string directory in directories) foreach (string directory in directories)
@ -285,12 +285,12 @@ internal abstract class XPath
internal static Dictionary<string, string[]> GetKeyValuePairs(IPropertyConfiguration propertyConfiguration, string? resultsFullGroupDirectory, string[]? directories) internal static Dictionary<string, string[]> GetKeyValuePairs(IPropertyConfiguration propertyConfiguration, string? resultsFullGroupDirectory, string[]? directories)
{ {
Dictionary<string, string[]> results = new(); Dictionary<string, string[]> results = [];
string directory; string directory;
string checkDirectory; string checkDirectory;
int converted = int.Parse($"1{new string('0', propertyConfiguration.ResultAllInOneSubdirectoryLength)}"); int converted = int.Parse($"1{new string('0', propertyConfiguration.ResultAllInOneSubdirectoryLength)}");
int plusOne = converted + 1; int plusOne = converted + 1;
List<string> collection = new(); List<string> collection = [];
if (directories is not null) if (directories is not null)
{ {
foreach (string key in directories) foreach (string key in directories)