Mur*_*dvi 8 asp.net date max find min
我有一个包含日期的列表:
List<string> StringDates;
[0]: "04.03.2010"
[1]: "09.03.2010"
[2]: "11.03.2010"
[3]: "12.03.2010"
[4]: "16.03.2010"
[5]: "18.03.2010"
[6]: "19.03.2010"
[7]: "23.03.2010"
[8]: "25.03.2010"
[9]: "26.03.2010"
Run Code Online (Sandbox Code Playgroud)
使用C#从这个列表中找出最小/最短日期的最佳/最短方法是什么?
Mar*_*ers 25
将它们转换为DateTime使用ParseExact(或TryParseExact),然后使用Linq获取Min和Max:
List<DateTime> dates = StringDates
.Select(x => DateTime.ParseExact(x, "dd.MM.yyyy", null))
.ToList();
DateTime minDate = dates.Min();
DateTime maxDate = dates.Max();
Run Code Online (Sandbox Code Playgroud)
请注意,在您的示例中,列表已按升序排序.如果你可以保证总是这样,并且你想要更好的性能,你可以采用第一个和最后一个元素,即O(1)而不是O(n).但是上面的内容更安全,所以即使你列出的内容可能总是被排序,你可能不应该进行这种优化,除非你确实需要它,以防有一天列表没有排序.
Rya*_*tti 19
使用linq!:
var list = new List<DateTime>();
list.Add(new DateTime(2010, 1, 1));
list.Add(new DateTime(2008, 1, 1));
list.Add(new DateTime(2009, 1, 1));
Console.WriteLine(list.Max(date => date));
Console.WriteLine(list.Min(date => date));
Run Code Online (Sandbox Code Playgroud)
Jef*_*dge 18
我喜欢简单的解决方案.
DateTime minDate = DateTime.MaxValue;
DateTime maxDate = DateTime.MinValue;
foreach (string dateString in StringDates)
{
DateTime date = DateTime.Parse(dateString);
if (date < minDate)
minDate = date;
if (date > maxDate)
maxDate = date;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45001 次 |
| 最近记录: |