2013-03-26 38 views
1

我有开始和结束时间作为性能 像房产类的列表:List<PropSchedules>如何从列表中得到最贴近项次

PropSchedules 
{ 
DateTime StartTime, 
DateTime EndTime 
} 

值是这样的:

Starttime EndTime 
07:00  09:00 
11:00  14:00 
15:00  20:00 

现在我有时间了,我想知道哪一个是最低的开始时间。

就像我有时间说,10:00那么第二项是最低的更大。

所以,任何人都有一些快捷方式来获得相同或我必须做的循环,并检查每一个。

回答

1

考虑一类PropSchedules

class PropSchedules 
{ 
    public DateTime StartTime; 
    public DateTime EndTime; 
} 

和PropSchedules

List<PropSchedules> listSchedules; 

和参考日期命名的启动列表:

DateTime start = DateTime.Now; // for example 

那么你就可以找到下一个PropSchedules with :

PropSchedules next = listSchedules.Where(s => s.StartTime > start).OrderBy(s => s.StartTime).FirstOrDefault(); 

下一个可以为空,如果没有价值的最大

5

尝试:

your_list.Where(x => x.Starttime > XXXX).Min(. . .) 
+0

任何不在Min'方法调用中填写lambda的理由? – Chris 2013-03-26 12:47:34

+0

@Chris不完全,不要100%记住params。 – evgenyl 2013-03-26 12:52:32

2

提供我了解的问题,这样的事情?

List<PropSchedules> propSchedules = // ... 
DateTime Time = // ... 

var closest = propSchedules 
    .Where(e => e.StartTime > Time) 
    .Select(e => e.StartTime) 
    .Min(); 
2

如果插入和删除值很多,你可以使用一个SortedList,或SortedDictonary,以确保一切都正常。

+0

SortedList是关键值,但我有更多的属性超过开始和结束时间,对不起,我没有提到问题 – donstack 2013-03-26 13:03:12

+0

无后顾之忧,感谢您的更新。 – 2013-03-26 13:38:34