2013-03-26 25 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

相關問題