Duplicar posible:
Why is there not a ForEach extension method on the IEnumerable interface?expresión lambda utilizando Foreach Cláusula
EDITAR
Como referencia, aquí está la entrada del blog, que Eric referrrred en los comentarios
http://blogs.msdn.com/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx
ORIG
Más de una curiosidad, pero supongo que uno de los savants C# Especificación ...
Por qué es que la cláusula ParaCada() no funciona (o no es disponible) para su uso en conjuntos de resultados IQueryable/IEnumerable ...
Primero tiene que convertir los resultados ToList() o ToArray() Presumiblemente hay una limitación técnica en la forma en que C# itera IEnumerables vs. Listas ... Tiene algo que ver con Ejecución diferida de IEnumerables/IQuerable Collections. p.
var userAgentStrings = uasdc.UserAgentStrings
.Where<UserAgentString>(p => p.DeviceID == 0 &&
!p.UserAgentString1.Contains("msie"));
//WORKS
userAgentStrings.ToList().ForEach(uas => ProcessUserAgentString(uas));
//WORKS
Array.ForEach(userAgentStrings.ToArray(), uas => ProcessUserAgentString(uas));
//Doesn't WORK
userAgentStrings.ForEach(uas => ProcessUserAgentString(uas));
Escribiría 'ForEach (uac => ProcessUserAgentString (uas))' como 'ForEach (ProcessUserAgentString)'. –
¿Cuál es el problema con un bucle for-each convencional? foreach (var uas en UserAgentStrings) ProcessUserAgentString (uas); – Dario
No hay problema ...Como dije, era más una curiosidad que la convención estuviera disponible para usar en Arrays/Lists pero no en IQueryables/IEnumerables y como Eric Lippert señaló a continuación, es una elección completamente filosófica del equipo de desarrollo y no por ningún motivo técnico –