Вам нужен рекурсивный поиск вашего контроля внутри всех элементов управления формы. Посмотрите , который принял ответ , который реализует очень хороший рекурсивный подход.
Делая это:
frm.Controls.OfType
вы ищете только в первом слое элементов управления ваших форм, так что если у вас есть кнопка внутри панели или другого элемента (99,999999% ситуаций ) ваш foreach не может его найти.
Принятие принятого ответа на ваш вопрос:
public IEnumerable GetAll(this Control control,Type type)
{
var controls = control.Controls.Cast();
return controls.SelectMany(ctrl => ctrl.GetAll(type))
.Concat(controls)
.Where(c => c.GetType() == type);
}
[...]
foreach (Button btn in frm.GetAll(typeof(Button)))
{
btn.BackColor = btnColor;
}
L-
Вы можете попробовать это:
var query=data.Skip(1).Take(1);
Если вы используете
.Take(2)
, вы получите первое и второе.
РЕДАКТИРОВАТЬ- Если вам нужны и первое, и второе, то вышеприведенное будет более эффективным, чем выполнение вашего запроса дважды :
.Take(1)
.Skip(1).Take(1)