-3

foreachループのみを使用して最大値を取得する方法は?

  class Program
{
    static void Main(string[] args)
    {
        var list = new List<DateTime>();
        list.Add(new DateTime(1980, 5, 12));
        list.Add(new DateTime(1960, 1, 2));
        list.Add(new DateTime(1983, 5, 4));
        list.Add(new DateTime(1999, 10, 11));
        list.Add(new DateTime(1913, 4, 7));

        foreach(var date in list)
        {




        };
    }

}

「最大」(最新) の日付を返すにはどうすればよいですか?

4

2 に答える 2

4

list.Max()リストから最大の日時オブジェクトが得られます。とにかくここで foreach ループを使用したいのはなぜですか?

編集:OPが要求したため、単純なforeachロジックも追加しました。

var maxDate = new DateTime(); // initialize to a zero value. 
foreach (var date in list)
{
    if (date > maxDate)
    {
        maxDate = date;
    }
};
于 2012-12-31T08:26:30.223 に答える
1

foreachループを本当に使用したい場合は、一時変数を使用して現在の最大値を追跡できます。

 var list = new List<DateTime>();
 list.Add(new DateTime(1980, 5, 12));
 list.Add(new DateTime(1960, 1, 2));
 list.Add(new DateTime(1983, 5, 4));
 list.Add(new DateTime(1999, 10, 11));
 list.Add(new DateTime(1913, 4, 7));

 DateTime max = DateTime.MinValue;

 foreach (DateTime d in list)
 {
     if (d > max)
         max = d;
 }

しかし、ryadavilliが示唆したように、LINQ(統合言語クエリ)を使用する方が簡単です。Linqは、.NETFrameworkのすべてのコレクションタイプに対する拡張機能のセットです。using System.Linqこれらは、ファイルの先頭にステートメントを配置することで使用できます。

于 2012-12-31T08:30:26.117 に答える