+5  A: 
Model.Emails.Select(x => x.EmailAddress).FirstOrDefault() ?? string.Empty
Mark Byers
Thank you very much, that is perfect!
jlnorsworthy
+1  A: 
<%= Html.Encode((Model.Emails.FirstOrDefault() ?? new Email { EmailAddress = string.Empty }).EmailAddress) %>  

Would work, not super clean to read though.

Quintin Robinson
Thanks for your answer, the above is nearly the same but just a bit more concise
jlnorsworthy
This is better than others. 'cause Select methods is looping on all emails and its not good choose for performance.
cem
+1  A: 

My vote for:

Model.Emails.Select(z => z.EmailAddress).DefaultIfEmpty("zzz").FirstOrDefault();

I thought that you could do it all inside the FirstOrDefault, but I was wrong-o! However, I also forgot that when you use DefaultIfEmpty you can just call First().

Model.Emails.Select(z => z.EmailAddress).DefaultIfEmpty("zzz").First();

Of course, replace ZZZ with just "" (not string.empty, that is unnecessary), but it is nice to see those records where the default is being chosen explicity when you are first writing it.

Andrew Backer
Bonus is it works in vb.net too!
Andrew Backer