using Remora.Results; namespace Octobot.Extensions; public static class CollectionExtensions { public static TResult? MaxOrDefault( this IEnumerable source, Func selector) { var list = source.ToList(); return list.Count > 0 ? list.Max(selector) : default; } public static void AddIfFailed(this List list, Result result) { if (!result.IsSuccess) { list.Add(result); } } /// /// Return an appropriate result for a list of failed results. The list must only contain failed results. /// /// The list of failed results. /// /// A successful result if the list is empty, the only Result in the list, or /// containing all results from the list. /// /// public static Result AggregateErrors(this List list) { return list.Count switch { 0 => Result.Success, 1 => list[0], _ => new AggregateError(list.Cast().ToArray()) }; } }