Есть ли способ получить все элементы управления с помощью linq.
То, что я хотел бы сделать, это что-то вроде этого (закажите элемент управления по индексу вкладки):
foreach (Control control in this.Controls.OrderBy(c => c.TabIndex)
{
...
}
Я использую этот вид запроса, когда у меня есть List <... >
Я использую С# и .Net 3.5
ControlCollection
реализует только IEnumerable
, а не IEnumerable<T>
. Это легко исправить - добавьте вызов Cast()
:
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)
{
}