On second thought...
I think I got hung up on your example code, and missed your premise. I can see that for long lists what you're talking about would be valid. If you're iterating through the whole list, filtering, and carrying out an action, a simpler way of doing what you describe in the newer versions of .Net, using my code above, would be something like:
list.ForEach(name =>
if (name.StartsWith("T")) {Console.WriteLine(name);})
though there would be no way to break out of the loop, unless you wanted to add an extension method to List that allowed you more control, which I guess would be just as much work as what you describe. So six of one, half dozen of the other.