Я бы предложил использовать MoreLINQ MaxBy
usings
using System.Linq;
using System.Collections.Generic;
using MoreLinq;
code
MyActionHistory maxRecord = actionHistorys
.MaxBy(o => o.CreateDateTime)
.Take(1)
.FirstOrDefault();
Это более эффективно, чем сортировка всего списка спускаясь и затем беря первый пункт. Если я правильно понимаю реализацию MaxBy и Take, это сделает один проход по списку и вернет тот, который имеет наибольшее значение (сначала с наибольшим значением, если несколько имеют одинаковое наибольшее значение).