日付がList<string>
です。
私のリストは、次のとおりです。日付をCで並べ替える文字列リスト
{"01/01/2013","10/01/2013","20/01/2013"}
私はこのように見えるために、リストをソートしたい:
{"20/01/2013","10/01/2013","01/01/2013"}
どのように私はこれを行うことができますか?
日付がList<string>
です。
私のリストは、次のとおりです。日付をCで並べ替える文字列リスト
{"01/01/2013","10/01/2013","20/01/2013"}
私はこのように見えるために、リストをソートしたい:
{"20/01/2013","10/01/2013","01/01/2013"}
どのように私はこれを行うことができますか?
それらを変換します:
var list = new List<string> {"01/01/2013", "10/01/2013", "20/01/2013"};
var orderedList = list.OrderByDescending(x => DateTime.Parse(x)).ToList();
あなたはデータの文字列表現を使用してはならない - 実際のDateTimeオブジェクトにこれらの文字列を変換し、LINQを経由して逆の順序でそれらを並べ替えることであろう我々は、すべてのオブジェクト指向の世界に生きている:)
ベストな方法:
var dates = Array.ConvertAll(dateStrings, x => DateTime.Parse(x));
return dates.OrderByDesc(x => x);
もう一つの方法は、this linkを参照して、カスタムのソート機能を実装することです。次に、あなただけのソート機能でそれを使用したい:
DateAsStringComparer myComparer = new DateAsStringComparer();
dateStrings.Sort(myComparer);
1あなたは文字列の比較を気にしませんでしたので、私は実際に:) –
を行ったように、あなたがラムダを必要としない、あなたはこのようにそれを行うことができます-Array.ConvertAll(dateStrings、DateTime.Parse) – himanshupareek66
彼らは英国/ AUS形式(日/月/年)であるため、あなたがOrderByDescending
を使用してそれらを並べ替えることができます。
List<string> dates = new List<string>() { "01/01/2013", "10/01/2013", "20/10/2013" };
foreach (var date in dates.OrderByDescending(x => x))
Console.WriteLine(date);
私は、LINQで...最初DateTime
オブジェクトに
WあなたはList<DateTime>
の代わりにList<string>
を使用しますか?
List<DateTime> dates = ...
dates.OrderByDescending(c => c).ToList();
彼には理由があると確信しています。私もそれが必要です。 –
これを試してみてください:
List<string> s = new List<string>() { "01/01/2013", "10/01/2013", "20/01/2013" };
var d = s.OrderByDescending(i => DateTime.ParseExact(i, "dd/MM/yyyy", null));
無効なdatetime文字列がある場合はどうですか?無効なdatetimeを特定の文字列で変更する方法はありますか? –