【发布时间】:2015-04-16 13:28:28
【问题描述】:
我需要更新 IEnumerable 列表中的值。
这是一个简短的 IEnumerable 示例:
IEnumerable<string> allsubdirs = new List<string>() { "a", "b", "c" };
现在,如果我想为每个项目添加时间戳,这不起作用:
allsubdirs.Select(a => a = a + "_" + DateTime.Now.ToString("hhmmss")).ToList();
这也不行:
foreach (var item in allsubdirs)
item = item + "_" + DateTime.Now.ToString("hhmmss");
我让它像这样工作:
IEnumerable<string> newallsubdirs = allsubdirs.Select(a => a + "_" + DateTime.Now.ToString("hhmmss")).ToList();
allsubdirs = newallsubdirs;
但这在某种程度上似乎是作弊。请问这样做的正确方法是什么?
【问题讨论】:
-
IEnumerable是只读。你不能修改它。如果要修改collection,可以考虑改成List。 -
或许使用 List
会更合适? -
使用适当的类而不是字符串,即使是 Tuple
或 Tuple 也可以。迭代查询结果并将第二项设置为时间戳 -
@PanagiotisKanavos - 从变量名称来看,他们试图将日期时间附加到文件夹名称
-
@Sayse 那么 OP 在
Select之后已经有了正确的结果,但是因为它们从未存储过而将它们丢弃