Comment écrire le contenu d'un flux de données en un autre flux dans .net?

J'ai souvent le problème que j'ai un ruisseau plein de données et que vous souhaitez tout écrire dans un autre flux.

Tous les code-exemples de l'utilisation d'un tampon en forme d'un tableau d'octets.

Est-il une façon plus élégante de cette?

Si non, quelle est la taille idéale de la mémoire tampon. Les facteurs qui composent cette valeur?