I find myself foreach-ing over IEnumerables a lot just so that I can return each result. Is there a way to compress something like this
foreach (var subSelec
Use Enumerable.SelectMany:
return subSelectors.SelectMany(subselector => FindSingle(context, subSelector));
This only works if you don't have any other yield return statements in your method.