2012-04-06 7 views
0

日付のリストで合計日数を取得したいだけです。ここに私のコードは10日戻ってきている、それは4日ほど印刷する必要があります。日付リストの合計日数を取得するC#

static void Main(string[] args) 
{ 
    //Initializes new List of DataTime Object. 
    List<DateTime> Dates = new List<DateTime>(); 

    //Fills the List of DateTime Object. 
    for (int i = 0; i < 5; i++) 
    { 
     Dates.Add(DateTime.Now.AddDays(i)); 
     //Adds new DataTime Object in the list of DateTime Object. 
     Thread.Sleep(1000); //Stop filling dates for one second. 
    } 

    //Prints the List of DataTime Object. 
    for (int i = 0; i <5 ; i++) 
    { 
     Console.WriteLine(Dates[i]); 
    } 
    avgDate(Dates); 
} 

public static void avgDate(List<DateTime> Dates) { 
    long totalTicks = 0; 
    string avgticks = ""; 
    TimeSpan days = new TimeSpan(); 

    for (int i = 0; i < Dates.Count; i++) 
    { 
     for (int j = 1; j < Dates.Count; j++) 
     { 
      days += (Dates[j] - Dates[i]); 
     } 
    } 
    Console.WriteLine(days.TotalDays); 
    Console.ReadLine();` 
} 
+0

- +(C - B)= C 「総日数」はリストの長さに等しいはずはありませんか?そして、それらが連続していない場合、あなたは '総日数 'をどのように定義しますか?それは '(MaxDate - MinDate).TotalDays'ですか? –

答えて

1

あなたの日付はリストになっているので、なぜlinq関数が動作しないのですか?

days = Dates.Max() - Dates.Min(); 
Console.WriteLine(days.TotalDays); 

私は< B < C、

(B - A)指定されたかなり確信して、リスト内の日付が連続している場合は、

+0

[リンク](http://stackoverflow.com/questions/10038771/get-total-days-in-a-list-of-dates-c-sharp)これは少ないコードで動作しますありがとうございます。 – Overmachine

+1

あなたのために働く場合は、あなたはそれを答えとしてマークすることができます:) – SouthShoreAK

1

1つのループで十分です。 編集:私はもっと単純化しました。

public static void avgDate(List<DateTime> Dates) { 
    long totalTicks = 0; 
    string avgticks = ""; 
    TimeSpan days = new TimeSpan(); 

    for (int i = 1; i < Dates.Count; i++) 
    { 
     days += (Dates[i] - Dates[i-1]); 
    } 
    Console.WriteLine(days.TotalDays); 
    Console.ReadLine();` 
+0

[リンク] http://stackoverflow.com/questions/10038771/get-total-days-in-a-list-of-dates-c-sharpありがとう、これは動作しますが、2番目のループを削除します、ありがとう – Overmachine