You could always use a MemoryStream and then use a StreamReader to read the data from memory.
You might get some lift from the following link which talks about using LINQ with a StreamReader. I'm not sure if it fits exactly what you're trying to do though.
http://blogs.msdn.com/ericwhite/archive/2006/08/31/linq-to-text-files.aspx
From the blog post:
StreamReader sr = new StreamReader("TextFile.txt");
var t1 =
from line in sr.Lines()
let items = line.Split(',')
where ! line.StartsWith("#")
select String.Format("{0}{1}{2}",
items[1].PadRight(16),
items[2].PadRight(16),
items[3].PadRight(16));
var t2 =
from line in t1
select line.ToUpper();
foreach (var t in t2)
Console.WriteLine(t);
sr.Close();
You'd want to change the StreamReader instantiation to something like
StreamReader sr = new StreamReader(myMemoryStreamVar)
or something similar.