Попробуйте как ниже,
Используйте МАКСА, чтобы найти maxt CreatedDate.
DateTime? latestPreferenceDate = null;
var LatestDate = preferences.Max(r=> r.CreatedDate);
Теперь Найдите все Отчеты, у которых есть CreatedDate = LatestDate.
var items = preferences.Where(r=> r.CreatedDate !=null && r.CreatedDate == LatestDate);
Если будет много отчетов с LatestDate (то вы получите многократные пункты с LatestDate), тогда, можно использовать FirstOrDefault , чтобы получить первое возникновение и LastorDefault для Последнего вхождения.
if (items != null && items.Count > 0)
{
var first = items.FirstOrDefault();
if (first != null)
{
latestPreferenceDate = first.CreateDate();
}
//For Last
var last = items.FirstOrDefault();
if (last != null)
{
latestPreferenceDate = last.CreatedDate();
}
}
Если вы хотите только последний пункт, у которого есть LatestDate, тогда пробуют ниже кода:
var item= preferences.Where(x=>x.CreatedDate !=null).
OrderbyDescending(x=>x.CreatedDate).
FirstOrDefault();
if (item != null)
{
latestPreferenceDate = item.CreatedDate;
}