I have 2 classes which looks like this:
class Widget
{
    string Selected { get; set; }
    List<Option> Options { get; set; }
}
class Option
{
    string InternalCode { get; set; }
    string ExternalCode { get; set; }
}
Options gets populated dynamically with different data per client for showing ExternalCode as options
Selected gets populated with ExternalCode.
I then need to access the InternalCode which matches.
At present I am doing this:
var option = widget.Options.SingleOrDefault(o => o.ExternalCode == widget.Selected);
var internalCode = option == null ? string.Empty : option.InternalCode;
Is this possible using a single line using Null Coalesce?
 
  
                     
                        
Sure, with a small change:
var option = widget.Options
                   .Where(o => o.ExternalCode == widget.Selected)
                   .Select(o => o.InternalCode)
                   .FirstOrDefault() ?? "";
In other words, project the sequence of matching options to a sequence of internal codes, and then take the first of those, defaulting to null... which allows you to use the null-coalescing operator on the result.
You can use the null-conditional operator as per Patrick's answer instead, but personally I'd prefer the code in this answer - I think it's simpler to understand.
 
                    See more on this question at Stackoverflow