From 99606ce35826e96867e5453516f6765277b20d1c Mon Sep 17 00:00:00 2001 From: ronnie Date: Mon, 6 Apr 2026 13:57:08 -0400 Subject: [PATCH] Added First or None to IOption --- Functional/OptionExtensions.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Functional/OptionExtensions.cs b/Functional/OptionExtensions.cs index 153c7a6..290d71d 100644 --- a/Functional/OptionExtensions.cs +++ b/Functional/OptionExtensions.cs @@ -84,4 +84,16 @@ public static class OptionExtensions public static Option ToStructOption(this IOption option) => option.HasValue(out var value) ? Option.Some(value) : Option.None; public static IOption ToClassOption(this Option option) => option.HasValue ? option.Value.ToOption() : None.Of(); + public static IOption FirstOrNone(this IEnumerable options) => options.Any() ? options.First().ToOption() : None.Of(); + public static IOption FirstOrNone(this IEnumerable options, Predicate predicate) + { + foreach (var item in options) + { + if (predicate(item)) + { + return item.ToOption(); + } + } + return None.Of(); + } }