static void Main(string[] args) { Either <int, string> intOrString1 = "Stuart"; Either <int, string> intOrString2 = "Jenny"; Either <int, string> intOrString3 = "Bruce"; Either <int, string> intOrString4 = "Bruce"; Either <int, string> intOrString5 = 66; IEnumerable <Either <int, string> > listOfEithers = new Either <int, string>[] { intOrString1, intOrString2, intOrString3, intOrString4, intOrString5 }; // transform the right values (if they are there) for each either in the list // As this is a bind, you need to lisft the result in to a Either listOfEithers.BindT(rightString => TransformRight(rightString)); Either <int, string> TransformRight(string rightString) { Either <int, string> t = $"My name is '{rightString}'"; return(t); } var newRights = listOfEithers.Rights(); /* note we dont care care about the lefts, * if we did we migth you match to see what both left and right values would be if they are set on the eithers we are looking at - see Tutorial 22 */ foreach (var str in newRights) { Console.WriteLine(str); } }