2011-07-13 4 views
2

可能性の重複:
Why is there not a ForEach extension method on the IEnumerable interface?ForEach - どこにいますか?

私はC#で一覧<T>上.ForEach方法が大好きです。これは、IEnumerableの拡張メソッドスイートの1つではありません<T>?

なぜ、各要素でアクションを呼び出すには、.ToList()を呼び出す必要がありますか?どうしてか言ってくれない?ありがとうございました。

List<T>.ForEach(Action<T> action); 
+6

かなり明確な説明のために、このリンクを参照してください:のhttp://をblogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx – dlev

+0

ToList()を使用して実際にクエリを実行するまで、foreachを使用してループする要素はありません。 –

+0

@JK - 'Count()'と 'First()'を取得できれば、 –

答えて

3

統合言語クエリ(LINQ)。言語統合拡張(LIE)ではありません。

特にLINQ-to-objectsについて言及しています。他のLINQ(to-SQL、to-XML)などは、任意のロジックを実装する上でより多くの問題を抱えています。

あなたはそれを自分で実装することを止めません。

public static class Extensions 
{ 
    public static void ForEach<T> (this IEnumerable<T> items, Action<T> action) 
    { 
     foreach (T item in items) 
     { 
     action (item); 
     } 
    } 
} 
+0

大丈夫です。 IEnumerable-Tの他の? –

関連する問題