Or you can go the whole hog like I have my language-ext project [1][2].
In C# it would look like this:
var city = from author in article.author
from address in author.address
from city in address.city
select city.ToLower();
Which is arguably even more elegant than the Scala 'for' notation.As an aside, there was a discussion [3] on one of the language-ext issues about my Try<T> implementation, and I was asked to compare it to Scala's Try monad. The crux of it was that it's perfectly possible to capture the majority of the use-cases, but may be of interest in the context of this discussion.
[1] https://github.com/louthy/language-ext
[2] https://github.com/louthy/language-ext/blob/master/LanguageE...
[3] https://github.com/louthy/language-ext/issues/33#issuecommen...