我有一个'事件'的列表,每个有DateTime
个列表,
喜欢:
var events = new List<Event>(){
new Event("A"){Occured = new List<DateTime>{"1.1.2018", "3.3.2018"}},
new Event("B"){Occured = new List<DateTime>{"4.4.2018", "5.5.2018"}}};
如何在所有DateTime
中找到一个最古老的 events
。
我试图结合级联的OrderByDescending().First()
来找到列表中最旧的 ...但是没有运气
(请对 LINQ 使用方法语法;-)谢谢)
答案 0 :(得分:5)
尝试SelectMany
以便将每个事件中的列表展平到IEnumerable<DateTime>
中:
DateTime oldest = events
.SelectMany(e => e.Occured) // Now we have IEnumerable<DateTime>
.Min();
如果您想要一个具有最短(最短)日期的事件,则可以Aggregate
:
var oldestEvent = events
.Where(s => s.Ocurred.Any()) // To be on the safe side
.Aggregate((s, a) => s.Ocurred.Min() < a.Ocurred.Min() ? s : a);
答案 1 :(得分:0)
这将为您提供帮助
DateTime smallest_date = events.First().Occured.First();
foreach (var eve in events)
{
eve.Occured.Sort();
var temp = eve.Occured.First();
if (temp.CompareTo(smallest_date) < 0)
{
smallest_date = temp;
}
}
Console.WriteLine(smallest_date);