如何从列表中获取最接近的项目

时间:2013-03-26 12:38:41

标签: c# .net collections

我有一个Property类列表,其中包含Start和End时间作为属性 喜欢:List<PropSchedules>

PropSchedules   
{  
 DateTime StartTime,  
 DateTime EndTime  
}

值如下:

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

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

如果我有时间说,10:00那么第二项是最低的。

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

4 个答案:

答案 0 :(得分:5)

尝试:

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

答案 1 :(得分:2)

如果我理解这个问题,可以这样吗?

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

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

答案 2 :(得分:2)

如果要插入和删除很多值,可以使用SortedListSortedDictonary来确保顺序正常。

答案 3 :(得分:1)

考虑一个PropSchedules类

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

和PropSchedules列表

List<PropSchedules> listSchedules;

以及名为start的参考日期:

DateTime start = DateTime.Now; // for example

然后你可以找到下一个PropSchedules:

PropSchedules next = listSchedules.Where(s => s.StartTime > start).OrderBy(s => s.StartTime).FirstOrDefault();
如果没有最低值

,则

next可以为null