返回日期之间嵌套数组的模型

时间:2016-06-16 21:17:08

标签: asp.net-mvc entity-framework linq asp.net-web-api where

我有以下模型,我只想检索列表中与日期范围的条件匹配的那些值。在我惯用的例子中,我希望将工作细节与员工在特定时间工作的日子一起返回。

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类具有TimeStartTimeEnd属性。

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> 条件的元素。

0 个答案:

没有答案