Mögliche Duplizieren mit:
Why is there not a ForEach extension method on the IEnumerable interface?Lambda Expression Foreach Klausel
EDIT
als Referenz, hier ist der Blog-Post, die eric in den Kommentaren referrrred zu
http://blogs.msdn.com/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx
ORIG
Mehr von Kuriosität Ich nehme an, sondern ein für die C# Spezifikation Savants ...
Warum ist es, dass die foreach() Klausel funktioniert nicht (oder nicht verfügbar) für den Einsatz auf IQueryable/IEnumerable Ergebnismengen ...
Sie müssen zuerst Ihre Ergebnisse ToList() oder ToArray() konvertieren theres Vermutlich eine technische Beschränkung auf die Art und Weise C# Iterierten IEnumerables Vs. Listen ... Hat etwas mit der verzögerten Ausführung von IEnumerables/IQuerable Collections zu tun. z.B.
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));
Ich würde 'ForEach (uac => ProcessUserAgentString (uas))' als 'ForEach (ProcessUserAgentString)' schreiben. –
Was ist das Problem mit einer herkömmlichen For-Each-Schleife? foreach (in UserAgentStrings var uas) ProcessUserAgentString (uas); – Dario
Theres kein Problem ...Wie gesagt, es war eher eine Kuriosität, warum die Konvention für Arrays/Listen verfügbar war, aber nicht für IQueryables/IEnumerables. Eric Lippert wies darauf hin, dass dies eine vollkommen philosophische Entscheidung des Entwicklerteams ist und nicht aus technischen Gründen –