 <p>You can do this without <code>LINQ</code>, but I want to use <code>LINQ</code> here:</p> <pre><code>public IEnumerable&lt;Control&gt; GetControls(Control c){ return new []{c}.Concat(c.Controls.OfType&lt;Control&gt;() .SelectMany(x =&gt; GetControls(x))); } foreach(Control c in GetControls(splitContainer.Panel2).Where(x=&gt;x is Label || x is Button)) MessageBox.Show("Name: " + c.Name + " Back Color: " + c.BackColor); </code></pre>