2016-04-25 3 views
-1

このように私は2日間でループし、ファイル名とリストをリストに生成します。だから私は知っているように私はループを避けることができますが、ループのようなファイル名を生成する任意の方法です。ルーピングなしでファイル名を生成する方法

DateTime StartDate = DateTime.Now; 
    DateTime EndDate = DateTime.Now.AddDays(-7); 
    List<string> filename = new List<string>(); 

    for (DateTime date = EndDate; date.Date <= StartDate.Date; date = date.AddDays(1)) 
    { 
     filename.Add("Report_"+date.ToString("dd-MM-yyyy")+".csv"); 
    } 

おかげ

+4

はあなたがループにしたくない特定の理由がありますか? – Sean

+1

終了日が開始日よりも遅いのはなぜですか? – gabba

+0

これまでの回答で提案されているLINQ文を使用することは、これまでより短くて簡潔になりましたが、パフォーマンスは向上せず、IMOでは可読性は向上しません。 ( "dd-MM-yyyy")+ "。csv"); – NineBerry

答えて

4

はありませんループとしてこのカウントしていますか?

DateTime StartDate = DateTime.Now; 
List<string> filename = 
    Enumerable 
     .Range(-7, 8) 
     .Select(n => "Report_" + StartDate.AddDays(n).ToString("dd-MM-yyyy") + ".csv") 
     .ToList(); 
1

これを試してみてください:

var filename = new int[8] 
    .Select((d, i) => string.Format("Report_{0:dd-MM-yyyy}.csv", DateTime.Now.AddDays(-i))) 
    .Reverse() 
    .ToList(); 
+0

これは、結果を後方に生成します。 – Enigmativity

+0

@Enigmativity思い出してくれてありがとう。私はそれを修正しました。 – Tzing

関連する問題