Pulling a subset of elements from a Dictionary
I would write it the obvious straight-forward LINQ way, which gives you good readability as well as lazy evaluation:

public IEnumerable&lt;Resource&gt; GetResources(IEnumerable&lt;string&gt; resourceNames)
{
    return resourceNames
        .Where(name =&gt; resources.ContainsKey(name))
        .Select(name =&gt; resources[name]);
}