Linq Получить все элементы управления (заказано)

2

Есть ли способ получить все элементы управления с помощью linq.

То, что я хотел бы сделать, это что-то вроде этого (закажите элемент управления по индексу вкладки):

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

Я использую этот вид запроса, когда у меня есть List <... >

Я использую С# и .Net 3.5

Теги:
linq
.net-3.5

1 ответ

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)
{
}
  • 0
    Примечание: TabIndex находится в WebControl, поэтому замените все «Control» на «WebControl».
  • 0
    TabIndex также на WinControl. Спасибо за быстрый ответ!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню