我有一个DateTime列表和单独的变量DateTime
PropertyEnricher
我试图以某种方式操纵列表:
List<DateTime> list = new List<DateTime>();
DateTime date;
列表已填写,日期是适当格式的日期,但不起作用。为什么呢?
答案 0 :(得分:5)
m
引用的列表中的项目不会因您在lambda表达式中对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生成 new 列出您的修改。
list = list.Select(m => DateTime(date.Year,date.Month,date.Day,m.Hour,m.Minute,m.Second))
.ToList();
使用最能满足您用例的技术。