This seems old
I'm not up on what version of .Net is more commonly in use now, so I don't mean this as a slam against you, but I remember reading about yield, and this iterator technique you're talking about, back when .Net 2.0 was released. In .Net 3 or 4 I believe you can accomplish what you're talking about using the List container:
List<string> list = new List<string> {"Tony", "John", "Timothy", "Anthony", "Julius"};
List<string> filteredList = list.FindAll(name => name.StartsWith("T"));