2016-05-21 5 views
0

私は、特定の日付範囲内にあるオブジェクトのリストを取得するためにLINQを使用しています。例えば、私は、DateTime書式で現在の日付があります:2016年5月21日0時00分00秒を、私は(5日前、3ヶ月前、1年前、5年前)1日前以降に公開されたニュースを取得する必要がありますし、この瞬間まで。 toDateまでは私の現在の日付であるどのように私は、日付範囲用の汎用クエリを行うことができますか?

List<MyObject> data = 
    DataDownloader.myList.Where(s => s.Date.Year >= fromDate.Year 
            && s.Date.Month >= fromDate.Month 
            && s.Date.Day >= fromDate.Day 
            && s.Date.Year <= toDate.Year 
            && s.Date.Month <= toDate.Month 
            && s.Date.Day <= toDate.Day).ToList(); 

:私はそれをfolowing方法をしました。

1日:

fromDate = toDate; 

5日:私は、次によりfromDateからを見つける

fromDate = toDate.AddDays(-5); 

3ヶ月:

fromDate = toDate.AddMonths(-3); 

など

しかし、私は3ヶ月間だけ2つのニュースを取得します。これは、2016年4月21日午前0時00分00秒と2016年5月21日午前0時00分00秒です。だから私の現在の日付は21.05.2016なので、月数だけが違うことは分かっています。私は何が間違っているのですか?私はそれを知っているより多くのニュースを取得する必要があります。

+2

は、なぜあなたはというだけで、 's.Date> = fromDate'などよりも、各コンポーネントを個別に照会していますか? –

答えて

2

あなたはあなたに正しい答えを与えるつもりされていない、日付の各要素を比較しています。

「最終3か月」(21/02/2016から21/05/2016まで)は、日が21〜21、月が2〜5、年が1〜 2016年と2016

あなたは効果的にというの間のすべての日付より21/02/2016、21/03/2016、21/04/2016または21/05/2016を探しています。

ただ、日付を比較:

list.Where(x => x.Date >= fromDate && x.Date <= toDate).ToList(); 
関連する問題