I have following class structure and I need to find the most recent UpdatedDate for Order i.e. Max of Order / Orderline / OrderlineSize / OrderlineVAS. The lists are never null but might be empty.
class Order
{
    public List<Orderline> Orderlines { get; set; }
    public DateTime UpdatedDate { get; set; }
}
class Orderline
{
    public List<OrderlineSize> OrderLineSizes { get; set; }
    public List<OrderlineVAS> OrderLineValueAddedServices { get; set; }
    public DateTime UpdatedDate { get; set; }
}
class OrderlineSize
{
    public DateTime UpdatedDate { get; set; }
}
class OrderlineVAS
{
    public DateTime UpdatedDate { get; set; }
}
I am using the following code to get Max which works fine if there are some OrderLineSizes but throws a NullReferenceException when list is empty.
(new List<DateTime?>() {
    order.UpdatedDate,
    order.Orderlines.Max(x=>x.UpdatedDate),
    order.Orderlines.SelectMany(x=>x.OrderLineSizes).DefaultIfEmpty()?.Max(y=>y.UpdatedDate),
    order.Orderlines.SelectMany(x=>x.OrderLineValueAddedServices).DefaultIfEmpty()?.Max(y=>y.UpdatedDate)
})
.Max().Value.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
I have solved it using elvis operation from C# 6 as below
(new List<DateTime?>() {
    order.UpdatedDate,
    order.Orderlines.Max(x=>x?.UpdatedDate),
    order.Orderlines.SelectMany(x=>x.OrderLineSizes).Max(y=>y?.UpdatedDate),
    order.Orderlines.SelectMany(x=>x.OrderLineValueAddedServices).Max(y=>y?.UpdatedDate)
})
.Max().Value.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ")
How could it be solved using earlier versions of C#? I reckon the use of Select clause in Linq but not sure if that is a good option. 
How can I optimize it for better performance?
 
    