Вопрос 1:
DateTime minDate = yourCollectionOfDateTimes.Min();
DateTime maxDate = yourCollectionOfDateTimes.Max();
Или, если коллекция большая, и вы не хотите повторять ее дважды, чтобы получить min и max:
DateTime? minDate = null, maxDate = null;
foreach (DateTime dt in yourCollectionOfDateTimes)
{
if ((minDate == null) || (dt < minDate.Value))
minDate = dt;
if ((maxDate == null) || (dt > maxDate.Value))
maxDate = dt;
}
Вопрос 2:
VideoGame oldest =
allGames.Aggregate((a, x) => x.ReleaseDate < a.ReleaseDate ? x : a);
VideoGame newest =
allGames.Aggregate((a, x) => x.ReleaseDate > a.ReleaseDate ? x : a);
Или, если коллекция большая, и вы не хотите повторять ее дважды, чтобы получить самую старую и новейшую версию:
VideoGame oldest = null, newest = null;
foreach (VideoGame vg in allGames)
{
if ((oldest == null) || (vg.ReleaseDate < oldest.ReleaseDate))
oldest = vg;
if ((newest == null) || (vg.ReleaseDate > newest.ReleaseDate))
newest = vg;
}