如何仅使用foreach循环获取最大值?

时间:2012-12-31 08:24:21

标签: c# c#-4.0

如何仅使用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)
        {




        };
    }

}

我如何返回“最大”(最新)日期?

2 个答案:

答案 0 :(得分:4)

list.Max()会为您提供列表中的最长日期时间对象。你为什么还想在这里使用foreach循环?

编辑:添加了一个简单的foreach逻辑,因为OP要求它。

var maxDate = new DateTime(); // initialize to a zero value. 
foreach (var date in list)
{
    if (date > maxDate)
    {
        maxDate = date;
    }
};

答案 1 :(得分: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是.NET Framework中所有集合类型的一组扩展。您可以通过在文件顶部放置using System.Linq语句来使用它们。