我可以一次使用linq foreach循环更新2个字段吗? 示例代码段: 我有一个userdata,其中包含Name,Email,CreateTime,LastUpdateTime字段。 我必须为所有用户重置CreateTime和LastUpdateTime。
要更新,我正在使用以下两个电话
users.ForEach(x => x.CreateTime= DateTime.Now.AddMonths(-1));
users.ForEach(x => x.LastUpdateTime = DateTime.Now);
相反,我可以在一个使用linq foreach循环中进行吗?
答案 0 :(得分:49)
首先,假设这是List<T>.ForEach
,这个不是使用LINQ。但是,您可以使用语句体创建lambda表达式:
users.ForEach(x => {
x.CreateTime = DateTime.Now.AddMonths(-1);
x.LastUpdateTime = DateTime.Now;
});
但是,您还希望使用一个一致的时间来进行所有更新:
DateTime updateTime = DateTime.Now;
DateTime createTime = updateTime.AddMonths(-1);
users.ForEach(x => {
x.CreateTime = createTime;
x.LastUpdateTime = updateTime;
});
为什么你想要以这种方式实现它并不是很清楚。我建议改为使用foreach
循环:
DateTime updateTime = DateTime.Now;
DateTime createTime = updateTime.AddMonths(-1);
foreach (var user in users)
{
user.CreateTime = createTime;
user.LastUpdateTime = updateTime;
}
请参阅Eric Lippert的blog post on foreach
vs ForEach
以了解更多有关此事的想法。
答案 1 :(得分:8)
它实际上不是linq,但你可以尝试
users.ForEach(x => { x.CreateTime = DateTime.Now.AddMonths(-1);
x.LastUpdateTime = DateTime.Now; });