Functional.Maybe
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")
);