Если вы не можете сделать эти два класса производными от общего Interface
\ Base Class
, которое является лучшим объектно-ориентированным решением.
Вы можете преобразовать элементы списка в динамические.
List<object> list = GetListFromSomeWhere();
var dynamicList = list.Cast<dynamic>();
Затем сортируйте динамический список без ошибок компиляции:
dynamicList.OrderBy(x => x.CreateDate);