Is there a more concise way to achieve code reuse such as below without the foreach loop?
IEnumerable<Stream> GetStreams() {
    // nope
    // yield return GetStreamsHelper(); 
    // nope
    // return GetStreamsHelper(); 
    // yup
    foreach (var x in GetStreamsHelper()) {
        yield return x;
    }
}
IEnumerable<Stream> GetStreamsHelper() {
   using (var stream = OpenStream()) {
        yield return stream;
   }
}
Here's a more complete example of what I'm trying to achive:
    class MoreCompleteExample {
        IEnumerable<Stream> GetStreams() {
            string[] files = new[] { "f1", "f2" };
            foreach (var f in files) {
                // HERE I WANT TO USE A HELPER METHOD
                // NOTHING SEEMS TO WORK EXCEPT A foreach
                // PERHAPS THERE IS A LINQ-y WAY TO WRITE THE foreach?
                //return GetStreamsHelper(f);                    
                //yield return GetStreamsHelper(f);                    
                foreach (var x in GetStreamsHelper(f)) {
                    yield return x;
                }
            }
        }
        IEnumerable<Stream> GetStreamsHelper(string filename) {
            using (var stream = new FileStream(filename, FileMode.Open)) {
                Diddle(stream);
                yield return stream;
                Caress(stream);
            }
        }
        void Diddle(Stream stream) { /* show the stream some love */ }
        void Caress(Stream stream) { /* that was nice but i gotsa go */ }
    }
 
    