如何仅使用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)
{
};
}
}
我如何返回“最大”(最新)日期?
答案 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
语句来使用它们。