2016-04-14 12 views
0

のリストを操作する方法:私は日時の一覧と、私は方法でリストを操作しようとしている</p> <pre><code>List<DateTime> list = new List<DateTime>(); DateTime date; </code></pre> <p>別の変数のDateTime持ってのDateTime

list.ForEach(m=>m = new DateTime(date.Year,date.Month,date.Day,m.Hour,m.Minute,m.Second)); 
     return list; 

リストが満たされているが、日付があります適切な形式の日付であり、動作していません。どうして?

+1

あなたのリストにもエントリがありますか? –

+0

基本的なdebugbgingがありません。結果:情報なしの質問。ひとつだけ価値があります。 – TomTom

+0

何を反復してリストに追加しますか?現時点では、日付のリストを繰り返して、その日付を日付に変換し、それをリストの現在の項目として設定しているように見えますが、意味がありません。 – Draken

答えて

5

mで参照されるリスト内の項目は、ラムダ式内のmへの新しい割り当てによって変更されません。リストの項目を変更するのではなく、元の値の一時的なコピーを上書きするだけです。

リスト内の値を実際に変更するには、インデクサーを使用して伝統的なループを作成して内容を変更します。

for (int i = 0; i < list.Count; i++) 
{ 
    var m = list[i]; 
    list[i] = new DateTime(date.Year, date.Month, date.Day, m.Hour, m.Minute, m.Second); 
} 

あなたは、元のリストの変化を観察する必要はありません、代わりに別のものを作る(あるいはを希望する)ことができるなら、あなたはコメントで提案に従い、新しいリストを生成するためのLINQを使用することができますあなたの変更と一緒に。

list = list.Select(m => DateTime(date.Year,date.Month,date.Day,m.Hour,m.Minute,m.Second)) 
      .ToList(); 

ユースケースを最もよく満たすテクニックを使用してください。

+2

...またはLINQを使用して新しいリストを作成してください。 –

+0

私のクエストを読んで、実際に助けてくれたすべての人に感謝します。 – Zet

関連する問題