如何获取不在列表中的值?

时间:2014-11-04 17:16:49

标签: c#

我想根据所选日期从列表中获取值。我知道这是模糊的,但继续阅读理解。  我有两个列表,房间和fullList。

客房仅包含房号/姓名:

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”和“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之间的时间。

离。对于SelectedDate(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。 SelectedDate(10/13/2014):

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

1 个答案:

答案 0 :(得分:0)

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>);