2016-11-23 12 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 ] 

結果:

ジョブズ: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年'、 'プロジェクト'は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(); 
関連する問題