2013-02-20 27 views
5

'a yazdırmak için başarısız seçin. Select'u işlevsel bir foreach olarak kullanmayı umuyordum. Aşağıdakileri yaptığımda,Konsolu

foo 
bar 
baz 

'u yazdırmayı beklemedim, ancak hiçbir şey yazdırmıyor. Nasıl olur? temelde aşağıdaki vücut ile anonim fonksiyonlar tanımlarken seçin kullanarak

List<String> strings = new List<String>() { "foo", "bar", "baz" }; 
strings.ForEach(st => { Console.WriteLine(st); }); 

: Kod

List<String> strings = new List<String>(){"foo", "bar", "baz"}; 
strings.Select(st => { Console.WriteLine(st); return 1; }); 
+5

Gerçekten "Seç" ile numaralandırmıyorsunuz. –

+2

Sonuçların gerçekte gerekli olana kadar yürütmeyi yürütür. – jrajav

+0

Bir dizinin her öğesini yeni bir formata seçin, yani toplama öğelerini başka bir türe dönüştürmek için onu kullanın. Gert ve jrajva için –

cevap

11

Kullanım ForEach olduğunu.

var x= strings.Select(st => { Console.WriteLine(st); return 1; }); 

foreach (var i in x){ } 

veya x.ToList()

Ve bu yanlış, :) ForEach kullanın: Eğer böyle Listede yineleme yaparken Yani, Console.WriteLine tetiklenmelidirler olacak

Console.WriteLine(st); 
return 1; 

+2

Yeryüzünde nasıl olduğunu fark etmedim mi? Yanıtın numaranın numaralandırılmadığını ve ek bir aramadaList(); – Martijn

+0

Ah, şimdi bunu nasıl özledim görüyorum. List foreach, bazı nedenlerden dolayı IEnumerable gösterir. – Martijn

+0

@Martijn Sanırım ilk kafa karışıklığı _some reason_'ın bir parçası :) –