「WindowsストアアプリでLINQを使って日付のコレクションをソートする - 酢ろぐ!」を応用して、ソート後に一番新しい(または古い)日付を取得します。ソートした後に一番先頭の要素を取り出すことで、一番新しいまたは一番古い日付を取得することが可能です。
日付のコレクションから一番新しい日付を取得する
var source = new [] { DateTime.Now, DateTime.MinValue, DateTime.MaxValue }; // 日付をソートして、一番新しいのコレクションを取得する var date = source.OrderByDescending(d => d.Ticks) .First(); System.Diagnostics.Debug.WriteLine(date);
出力:
9999/12/31 23:59:59
日付のコレクションから一番古い日付を取得する
var source = new [] { DateTime.Now, DateTime.MinValue, DateTime.MaxValue }; // 日付をソートして、一番古いのコレクションを取得する var date = source.OrderBy(d => d.Ticks) .First(); System.Diagnostics.Debug.WriteLine(date);
出力:
0001/01/01 0:00:00
追記
「この場合ではMax()、Min()使えば良いと良いのでは?」と指摘を頂きました。「確かにその通りや……」と思ったので追記します。ソートからの展開しか考えてなかったとは言えない。
日付のコレクションから一番新しい日付を取得する(Maxメソッド使用)
var source = new [] { DateTime.Now, DateTime.MinValue, DateTime.MaxValue }; // 日付をソートして、一番新しいのコレクションを取得する var date = source.Max(); System.Diagnostics.Debug.WriteLine(date);
日付のコレクションから一番古い日付を取得する(Minメソッド使用)
var source = new [] { DateTime.Now, DateTime.MinValue, DateTime.MaxValue }; // 日付をソートして、一番古いのコレクションを取得する var date = source.Min(); System.Diagnostics.Debug.WriteLine(date);