読者です 読者をやめる 読者になる 読者になる

酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windowsストアアプリで日付のコレクションから一番新しい日付/一番古い日付を取得する

Windows Store Apps

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);