余談だけど、
var sr = new StringReader(text);
こうしてStream作ったは、良いけど、Disposeしてないな。

まあ、文字列がデータソースだし特に問題ないだろうけど、ファイル・ネットワークから読み取る場合、
必ず閉じる必要がある。これを簡単にするための構文が
using( var sr = new StringReader(text) ){
//
}
こんなふうにusingブロックで囲むと抜けたときに必ずDisposeメソッドが呼ばれる。(極々一部例外あり)