2016-11-23 1 views
1

다른 시작 날짜와 종료 날짜가있는 사용자의 작업 목록이 있습니다.일정 범위의 날짜를 기준으로 시작 날짜/종료 날짜가 일치하는 개체

사용자에게 시작일과 종료일이있는 프로젝트가 있습니다.

채용 :

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 ] 
,691

나는 프로젝트 범위 날짜

예로서 일치하는 것을 직업으로 알고 싶어 363,210

결과 :

채용 : 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(); 
+0

Do yo 단지'프로젝트'의 범위 안에있는'모든 일'을 원하거나'프로젝트 '의 범위 안에 부분적으로 *있는'일'을 원합니까? 예를 들어'jobA'는'2000'에서'2005','jobB'는'2004'에서'2006','project'는'2003'에서'2007'까지입니다. 'jobB' 또는'jobA' *와 *'jobB'만을 원하십니까? – Corak

+0

당신의 논리로 지금 당신은'프로젝트'보다 "더 크다", 즉'직업 '은''프로젝트''이전에 "(또는 그와 동등한) 시작해야만합니다 ** 또한" 프로젝트의 "뒤에"(또는 같음). – Corak

+0

@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] –

답변

3

, 실제로 날짜가 교차 여부를 확인하지 않는, 그러면 문제가 해결되고 올바른 결과를 얻을 수 있습니다.

jobs.Where(e => e.StartDate <= project.EndDate && e.EndDate >= project.StartDate).ToList(); 
관련 문제