2009-03-09 9 views
2

Existe-t-il un moyen de récupérer tout le contrôle en utilisant linq.Linq Récupérer tous les contrôles (classés)

Ce que je vais aime faire est quelque chose comme ça (commander le contrôle par index de tabulation):

foreach (Control control in this.Controls.OrderBy(c => c.TabIndex) 
{ 
    ... 
} 

J'utilise ce genre de requête quand je suis arrivé une liste < ...>

J'utilise C# et .Net 3.5

Répondre

4

ControlCollection implémente seulement IEnumerable, pas IEnumerable<T>. C'est facile à corriger si - ajouter un appel à Cast():

foreach (Control control in Controls.Cast<Control>() 
            .OrderBy(c => c.TabIndex)) 
{ 
} 

Ou vous pouvez utiliser une expression de requête, qui appellera Cast() le cas échéant:

var controls = from Control c in Controls 
       orderby c.TabIndex 
       select c; 

foreach (Control control in controls) 
{ 
} 
+0

Note: TabIndex est WebControl, donc remplacer tous "Contrôle" avec "WebControl". –

+0

TabIndex est également sur WinControl. Merci pour cette réponse rapide! – Melursus

+0

Oups, passez tout votre temps dans un monde et vous oubliez les autres existent :) –

Questions connexes