2009-03-09 3 views
2

linq을 사용하여 모든 컨트롤을 가져 오는 방법이 있습니까? >Linq 모든 컨트롤 가져 오기 (순서)

내가 목록 <를 가지고 쿼리의 종류를 사용

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

... : 내가하고 싶은 것들

는 그런 일 (탭 인덱스에 의한 제어를 주문)입니다

나는 C#과 .Net 3.5를 사용한다.

답변

4

ControlCollection은가 아니라 IEnumerable을 구현한다.

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

을 아니면 Cast() 필요한 경우 호출 쿼리 식, 사용할 수 있습니다 :

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

foreach (Control control in controls) 
{ 
} 
+0

참고 :이 tabIndex가 WebControl에, 그래서 대체 모든 Cast()에 호출을 추가 - 그 그래도 해결하기 위해 쉽게 "WebControl"로 "제어". –

+0

TabIndex도 WinControl에 있습니다. 빠른 대답을위한 Thx! – Melursus

+0

죄송합니다. 한 곳에서 시간을 보내고 다른 사람이 있다는 것을 잊어 버릴 수 있습니다 :) –