我有一个DateTime列表和单独的变量DateTime
List<DateTime> list = new List<DateTime>();
DateTime date;
Run Code Online (Sandbox Code Playgroud)
我试图以这种方式操纵列表:
list.ForEach(m=>m = new DateTime(date.Year,date.Month,date.Day,m.Hour,m.Minute,m.Second));
return list;
Run Code Online (Sandbox Code Playgroud)
列表已填写,日期是适当格式的日期,但不起作用.为什么?
引用的列表中的项目m不会被您m的lambda表达式中的新赋值更改.您只是覆盖原始值的临时副本,而不是修改列表的项目.
要对列表中的值进行实际更改,请使用索引器编写传统循环以修改内容.
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);
}
Run Code Online (Sandbox Code Playgroud)
如果您不需要观察原始列表中的更改,而是可以(或者甚至希望)生成另一个更改,那么您可以按照注释中的建议操作,并使用Linq生成包含您的修改的新列表.
list = list.Select(m => DateTime(date.Year,date.Month,date.Day,m.Hour,m.Minute,m.Second))
.ToList();
Run Code Online (Sandbox Code Playgroud)
使用最能满足您的用例的技术.