Elenco .ForEach non trovato

Sto facendo il porting di un’app per Windows Phone a Win 8, e ho trovato questo ostacolo, ma non riesco a trovare la soluzione.

Ho un:

List tempItems = new List(); 

e

 ObservableCollection chemists = new ObservableCollection(); 

Ho aggiunto elementi ai miei tempItem ecc, quindi faccio questo:

  tempItems.OrderBy(i => i.Distance) .Take(20) .ToList() .ForEach(z => chemists.Add(z)); 

Ma ottengo questo errore:

 Error 1 'System.Collections.Generic.List' does not contain a definition for 'ForEach' and no extension method 'ForEach' accepting a first argument of type 'System.Collections.Generic.List' could be found (are you missing a using directive or an assembly reference?) 

Perché potrebbe essere, Win8 non ha questa funzione? Mi riferisco a quanto segue:

 using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Net.Http; using System.Net.NetworkInformation; using System.Xml.Linq; using Windows.Devices.Geolocation; using Windows.Foundation; using Windows.Foundation.Collections; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Media.Imaging; using Windows.UI.Xaml.Navigation; using System.Collections.ObjectModel; 

Se ForEach non è disponibile, esiste un’alternativa che faccia lo stesso?

Secondo la voce MSDN , ForEach non è disponibile nelle app di Windows Store (notare le piccole icone dietro i membri).

Detto questo, il metodo ForEach in genere non è molto più utile del semplice utilizzo di un ciclo foreach. Quindi il tuo codice:

 tempItems.OrderBy(i => i.Distance) .Take(20) .ToList() .ForEach(z => chemists.Add(z)); 

potrebbe diventare:

 var items = tempItems.OrderBy(i => i.Distance).Take(20); foreach(var item in items) { chemists.Add(item); } 

Direi che in termini di espressività non importa davvero.