如何获取不直接在列表中的值

本文关键字:列表 何获取 获取 | 更新日期: 2023-09-27 18:29:16

我想从基于所选日期的列表中获取值。我知道这是模糊的,但继续阅读以理解。我有两份清单,房间和全套清单。

房间仅包含房间编号/名称:

7-04
7-05
7-06
7-07 (Small Conference Room)
7-08
Large Conference Room

fullList由几个字符串组成("#"用作分隔符,房间也与上面的列表相同):

event_id + "#" + text + "#" + eventStart + "#" + eventEnd + "#" + repeat+ "#" + Days + "#" + room + "#" + startDate);

fullList中的一个简单输入显示为:

"3#CISC3345#10:45#13:00#0#Monday:Wednesday#7-08#10/03/2014"

我想要的是一个新的列表,对于每个房间,我想获得eventStart之前和evnetEnd之后的时间,边界为"9:00"answers"22:00"。

例如:

示例数据如下(每一行都是fullList中的一个值):

Event_ID    Event       EventStart  EventEnd    Days               Repeat Rooms   DayStarts
  2         CISC 3660   09:00:00    12:30:00    Monday               1    7-07     9/19/2014    
  4         MATH 2501   15:00:00    17:00:00    Monday:Wednesday     0    7-04     10/13/2014   
  5         CISC 1110   14:00:00    16:00:00    Monday               1    7-07     9/19/2014    
  7         CISC 1340   15:00:00    22:00:00    Monday               1    7-08     9/19/2014    

我想得到不在eventStart和eventEnd之间的时间。

前任。对于选定日期(2014年9月19日),列表应返回:

Room  FreeTimeStart  FreeTimeEnd
7-07   12:30:00       14:00:00
7-07   16:00:00       22:00:00
7-08   09:00:00       15:00:00

ex2.选择日期(2014年10月13日):

Room  FreeTimeStart  FreeTimeEnd
7-04    9:00:00       15:00:00
7-04   17:00:00       22:00:00  

如何获取不直接在列表中的值

public class FullList {
    public int ID              { get; set; }
    public string Event        { get; set; }
    public string Text         { get; set; }
    public DateTime EventStart { get; set; }
    public DateTime EventEnd   { get; set; }
    public string  Days        { get; set; }
    public int Repeat          { get; set; }
    public string Room         { get; set; }
    public DateTime StartDate  { get; set; }
    public override string ToString() {
        return ID + "#" + Text + "#" + EventStart + "#" + EventEnd + "#" + Repeat+ "#" + Days + "#" + Room + "#" + StartDate);
    }
}
public class FullListCollection : List<FullList> {
    public List<FullList> FindByStartEnd (DateTime start, DateTime end) {
        return this.FindAll(x => x.EventStart >= start && x.EventEnd <= end);
    }
}
// in the client class, assume we have a populated FullListCollection
myEventList // our list of events
FullListCollection EventsInDateRange = myEventList.FindByStartEnd ( <somestartdate>, <someenddate>);