如何操作DateTime列表

时间:2016-04-14 05:59:40

标签: c# linq

我有一个DateTime列表和单独的变量DateTime

PropertyEnricher

我试图以某种方式操纵列表:

 List<DateTime> list = new List<DateTime>(); 
 DateTime date;

列表已填写,日期是适当格式的日期,但不起作用。为什么呢?

1 个答案:

答案 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();

使用最能满足您用例的技术。