2012-06-11 979 views
14

¿Puedo actualizar 2 campos usando linq foreach loop a la vez? Fragmento de muestra: Tengo un userdata con campos Name, Email, CreateTime, LastUpdateTime. Tengo que restablecer CreateTime y LastUpdateTime para todos los usuarios.actualizar 2 campos usando linq foreach

Para actualizar estoy usando 2 llamadas como abajo

users.ForEach(x => x.CreateTime= DateTime.Now.AddMonths(-1)); 
users.ForEach(x => x.LastUpdateTime = DateTime.Now); 

vez puedo hacerlo en un solo bucle utilizando LINQ foreach?

+0

sí, puedes hacerlo. – Reniuz

+0

Esto NO es LINQ. – leppie

+7

Mientras obtengo la parte no linq, no entiendo el voto a la baja. El OP claramente está tratando de aprender y la disminución de votos de un nuevo usuario no es precisamente útil. Por lo que puedo decir, la pregunta tiene todos los elementos normales, ¿no? – Maverik

Respuesta

39

Bueno, para empezar, suponiendo que esto es , esto no es el uso de LINQ. Pero sí, puede crear una expresión lambda utilizando un cuerpo de la declaración:

users.ForEach(x => { 
    x.CreateTime = DateTime.Now.AddMonths(-1); 
    x.LastUpdateTime = DateTime.Now; 
}); 

Sin embargo, es posible que también desee utilizar un momento coherente para todas las actualizaciones:

DateTime updateTime = DateTime.Now; 
DateTime createTime = updateTime.AddMonths(-1); 

users.ForEach(x => { 
    x.CreateTime = createTime; 
    x.LastUpdateTime = updateTime; 
}); 

En realidad no es clara por qué quieres lograrlo de esta manera. Se recomienda usar un bucle en lugar foreach:

DateTime updateTime = DateTime.Now; 
DateTime createTime = updateTime.AddMonths(-1); 

foreach (var user in users) 
{ 
    user.CreateTime = createTime; 
    user.LastUpdateTime = updateTime; 
} 

Véase Eric blog post on foreach vs ForEach para más pensamientos sobre este Lippert.

8

en realidad no es LINQ, pero se puede tratar

users.ForEach(x => { x.CreateTime = DateTime.Now.AddMonths(-1); 
        x.LastUpdateTime = DateTime.Now; }); 
Cuestiones relacionadas