I’ve been using SQL for many years and find COALESCE to be extremely useful. Recently I realized that if I could do the same functionality in C# it would be helpful, so I started to look.
For basic Coalesce functionality all you need to do is use the ?? operator.
string name = nameA ?? nameB ?? nameC ?? string.Empty;
For more advanced functionality I am planning to use the logic I found in the “Extending the C# Coalesce Operator” post on StackOverflow to create an extension method that will allow the following code to work.
public class Bar { public Bar Child { get; set; } public Foo Foo { get; set; } } Bar bar=new Bar { Child=new Bar { Foo=new Foo("value") } }; // prints "value": Console.WriteLine(Coalesce.UntilNull(bar, b => b.Child, b => b.Foo, f => f.Value) ?? "null"); // prints "null": Console.WriteLine(Coalesce.UntilNull(bar, b => b.Foo, f => f.Value) ?? "null");