Option types for C# with LINQ support and rich fluent syntax for many popular uses: var maybeOne = "one".ToMaybe(); Maybe<string> maybeAnother; var maybeBoth = from one in maybeOne from another in maybeAnother select one + another; maybeBoth.Match( both => Console.WriteLine("Result is: {0}", both), @else: () => Console.WriteLine("Result is Nothing, as one of the inputs was Nothing") );
$ dotnet add package Functional.MaybeNo README available.