2017-05-06 6 views
0

私は2つの日付ピッカーを持っています。 03/05/2017から10/05/2017毎週のレポートを取得するために日付のリストをフィルタリングする方法

これらの2つの日付を使用して、毎週レポートを生成したいと考えています。

その結果、私は期待して:2017年3月5日のため

  • つのレポート - 2017年7月5日
  • 2017年8月5日に1つのレポート - 2017年8月5日

週末の最終日は日曜日とみなしてください。

だから私は、リストに

DateTime start = new DateTime(2017, 05, 03); 
DateTime end = new DateTime(2017, 05, 10); 

if (end < start) 
    throw new ArgumentException("endDate must be greater than or equal to startDate"); 

var dates = new List<DateTime>(); 

for (var dt = start; dt <= end; dt = dt.AddDays(1)) 
{ 
    dates.Add(dt); 
} 

それらを追加しましたし、今私は、私は上記の記述が、私は失敗していて、毎週の結果を取得するために、何らかの形でそれらをフィルタリングする必要があります。

ご意見はありますか?私のアプローチが間違っていると思いますか?

+2

あなたは何をすべきか_iの意味は間違っていますか?あなたはもっと具体的になりますか? –

+0

私はそれを行う方法を見つけることができないか、その方法が正しいかどうかわからないのですか? –

答えて

0

あなたはList<List<DateTime>>でこれを行うと、このようなあなたのループで曜日のチェックを追加することができます。

 var dates = new List<List<DateTime>>(); 
     List<DateTime> weekDays = new List<DateTime>(); 
     for(var dt = start; dt<=end;dt=dt.AddDays(1)) 
     { 

      if(dt.DayOfWeek != DayOfWeek.Sunday || DateTime.Compare(dt,start)==0) 
      { 
       weekDays.Add(dt); 
      } 
      else 
      { 
       weekDays.Add(dt); 
       dates.Add(weekDays); 
       weekDays = new List<DateTime>(); 
      } 
     } 
     if(weekDays.Count>0) 
     { 
      dates.Add(weekDays); 
     } 

そして、あなたは、次のようなリストのリストを取得します:

03.05.2017 00:00:00 
04.05.2017 00:00:00 
05.05.2017 00:00:00 
06.05.2017 00:00:00 
07.05.2017 00:00:00 

08.05.2017 00:00:00 
09.05.2017 00:00:00 
10.05.2017 00:00:00 
+0

正しい答えです –

関連する問題