2017-11-08 4 views
-1

以上のforeachでラムダ関数を使用して、私はこれを翻訳したいと思います:コントロール

foreach(Control c in Controls) 
{ 
    if(c is TextBox) 
    { 
     // ... 
    } 
} 

中に、:

foreach(Control c => (c is TextBox) in Controls) 
{ 
    // ... 
} 

は、それを具体的にラムダ関数を使用してどのように行うことができますか?

+0

基本的に、テキストボックスであるすべてのコントロールが必要ですか? – Jerodev

+0

@Jerodev基本的にyes – Donnoh

+2

@PatricHofman質問には重複した回答が含まれているので、これは重複しません。実際の質問はすべてのテキストボックスを取得する方法ではなく、このループを翻訳する方法です。 – Ernis

答えて

5

参考にLINQ:

using System.Linq; 

そして、これを使用します。あなたがいる

foreach (var control in Controls.Cast<Control>().Where(c => c is TextBox)) 
{ 
    // ... 
} 
+0

'Control.ControlCollection'に 'Where'の定義が含まれていません。どのように修正できますか? – Donnoh

+0

この回答は無効です。それは動作しません。 –

+0

using System.Linq –

9

使用OfType

foreach (TextBox c in Controls.OfType<TextBox>()) 
{ 

} 

これは、指定された型に基づいてIEnumerableの要素をフィルタ処理します。

はまた、最初にあなたのusingディレクティブにLINQを追加することを忘れないでください:

using System.Linq; 
0

をのようなものを探して次のとおりです。

foreach(TextBox ctrlTxtBox in Controls.OfType<TextBox>()) 
{ 
    // Got it code here 
} 

OfType指定した型に基づいてIEnumerableの要素をフィルタリングします。

+1

あまりにも遅い....... –

+2

@PatrickHofman:まあまあ、それは私がこの名前を..持っている理由です!ヒットポストの前に電話をしました。 –

+0

これはいつも起こっています:) –

関連する問題