いくつかの日付を数値で並べ替えたい(Date.compare()ではない)
クライアント側(JS)でテーブルを並べ替えるために、日付をどのタイプに変換する必要がありますか?
int?タイムスタンプ?
そしてどうやって?
タイプDateTime.Ticks
のそれを使用してください。long
Ticksプロパティを使用して、DateTimeの数値表現を取得します。これらをティックでソートするサンプルプログラムは次のとおりです。
static void Main(string[] args)
{
var dates = new List<DateTime> { new DateTime(2011, 5, 31), new DateTime(2012, 7, 31), new DateTime(2010, 1, 31) };
dates.OrderBy(d => d.Ticks).ToList().ForEach(d => Console.WriteLine(d.ToString()));
Console.WriteLine("Press ENTER to exit...");
Console.ReadLine();
}
これはこの出力を生成します:
1/31/2010 12:00:00 AM
5/31/2011 12:00:00 AM
7/31/2012 12:00:00 AM
Press ENTER to exit...
あなたはそれをソートするために何かに日付を隠す必要はありません:
new[] { DateTime.Now, DateTime.Now.AddDays(-1) }.OrderBy(d => d);
それらをに基づいてコレクションに追加し、LINQIEnumerable<DateTime>
を使用して次のように並べ替えるだけです。
using System.Collections.Generic;
using System.Linq
...
List<DateTime> dates = new List<DateTime>();
dates.Add(new DateTime(2012, 04, 01));
dates.Add(new DateTime(2012, 04, 05));
dates.Add(new DateTime(2012, 04, 04));
dates.Add(new DateTime(2012, 04, 02));
dates.Add(new DateTime(2012, 04, 03));
List<DateTime> orderedDates = dates.OrderBy(d => d);
DateTime.Ticks
日付は比較可能であるため、使用する必要はありません。