【发布时间】:2016-11-23 09:59:24
【问题描述】:
我有一个用户的工作列表,具有不同的开始日期和结束日期。
用户的项目也有开始和结束日期。
我想知道项目匹配的工作范围日期
示例:
工作:
1. [ 1.2.1999 ] - [ 3.4.2000 ]
2. [ 4.4.2000 ] - [ 1.1.2004 ]
3. [ 2.1.2004 ] - [ 6.8.2004 ]
4. [ 7.8.2004 ] - [ 9.10.2005 ]
5. [ 10.10.2010 ] - [ 12.12.2010 ]
6. [ 1.1.2014 ] - [ 1.1.2016 ]
7 [ 2.1.2016 ] - [ 10.10.2016 ]
项目:
[ 10.10.2004 ] - [ 10.10.2014 ]
结果:
职位:4,5,6
代码:
Job {
public DateTime StartDate{ get;set;}
public DateTime EndDate {get;set;}
}
var jobs = new List<Job>();
// Will not work
jobs
.Where(e => e.StartDate <= project.StartDate &&
e.EndDate >= project.EndDate)
.ToList();
【问题讨论】:
-
您是否只希望所有
jobs完全 在project的范围内,或者您还希望jobs部分 在project的范围内?例如,jobA是从2000到2005,jobB是从2004到2006,project是从2003到2007。你只想要jobB还是两者都想要jobA和jobB? -
按照你的逻辑,你只会得到比
project“大”的jobs,即job必须在project之前“开始”(或等于)并且也结束“之后”(或等于)project。 -
@Corak 部分和完整。对于开始/结束的项目:[10.10.2004] - [10.10.2014],我将匹配 [7.8.2004] - [9.10.2005],[10.10.2010] - [12.12.2010],[1.1.2014 ] - [ 1.1.2016 ]
标签: c# .net linq list datetime