我有以下模型,我只想检索列表中与日期范围的条件匹配的那些值。在我惯用的例子中,我希望将工作细节与员工在特定时间工作的日子一起返回。
public class Job
{
public string JobName { get; set; }
public List<Day> Days{ get; set; }
}
public class Day
{
public string DayName { get; set; }
public DateTime TimeStart { get; set; }
public DateTime TimeEnd { get; set; }
}
我通过调用Entity Framework填充JobDays,以便在那里建立Job / Day关系。
IEnumerable<Job> jobDays = DataLayer.MethodCall();
填充后数据可能如下所示。
<Job>
<JobName>Sweep</JobName>
<Days>
<Day>
<DayName>Tuesday</DayName>
<TimeStart>2009-01-06T07:01:00</TimeStart>
<TimeEnd>2009-01-06T08:00:40</TimeEnd>
</Day>
<Day>
<DayName>Wednesday</DayName>
<TimeStart>2009-01-07T07:05:00</TimeStart>
<TimeEnd>2009-01-07T09:01:40</TimeEnd>
</Day>
<Day>
<DayName>Thursday</DayName>
<TimeStart>2009-01-08T07:05:00</TimeStart>
<TimeEnd>2009-01-08T08:30:10</TimeEnd>
</Day>
</Days>
</Job>
我已尝试以下操作,但仍会返回所有Day值。对于以下内容,假设Day
类具有TimeStart
和TimeEnd
属性。
var query = jobDays.Where(d => d.Days.Any(m => m.TimeStart < timeValue && m.TimeEnd > timeValue));
如何返回作业数据以及仅匹配的日期数据?
例如,如果我的.Where()子句要求2009-01-06T08:45:00
处发生的结果,我希望查看所有<Job>
数据,但只包括{{1与日期范围匹配的数据。
<Day>
目前,我的流程返回了许多不符合<Job>
<JobName>Sweep</JobName>
<Days>
<Day>
<DayName>Wednesday</DayName>
<TimeStart>2009-01-07T07:05:00</TimeStart>
<TimeEnd>2009-01-07T09:01:40</TimeEnd>
</Day>
</Days>
</Job>
条件的元素。