Upload de arquivo lido na memória e usado como arquivo de texto - existe uma maneira melhor?

Eu tenho um aplicativo da web hospedado na intranet onde o usuário fará o upload de um arquivo de texto com dados delimitados por espaço em 5 colunas. Eu não quero salvar o arquivo, então eu queria apenas usá-lo na memória. Eu tentei muitos exemplos diferentes fora da web e nenhum funcionou. Finalmente, um colega de trabalho me mostrou como fazer isso. Aqui está o código e eu estou querendo saber se existe uma maneira melhor de fazer isso. No final, tudo que eu quero é uma maneira de vincular os dados a um gridview ou repetidor para visualização e posterior armazenamento em um banco de dados (SQL Server).

O ID da tag asp do arquivo de upload é SurveyFileUpload
O SurveyDate é um campo asp: input

Int32 fileLen = SurveyFileUpload.PostedFile.ContentLength;

// Create a byte array to hold the contents of the file.
Byte[] buffer = new Byte[fileLen];

// Initialize the stream to read the uploaded file.
Stream s = SurveyFileUpload.FileContent;

// Read the file into the byte array.
s.Read(buffer, 0, fileLen);

// Convert byte array into characters.
ASCIIEncoding enc = new ASCIIEncoding();
string str = enc.GetString(buffer);
testReadFile(str, db_surveyDate.Text);

protected void testReadFile(string inFileString, string inSurveyDate)
{
    string[] lines = inFileString.Split('\n');
    curFileListing.InnerHtml = "";
    int curRow = 1;
    var readings = from line in lines
       select new
       {
           // this is just for display purposes to show the number of rows on the page
           Row = curRow++,
           SurveyDate = inSurveyDate,
           ItemNumber = Regex.Split(line, "[ ]+")[0],
           Northing = Regex.Split(line, "[ ]+")[1],
           Easting = Regex.Split(line, "[ ]+")[2],
           Elevation = Regex.Split(line, "[ ]+")[3],
           Name = Regex.Split(line, "[ ]+")[4]
       };
    saveFileData.Visible = true;
    GridView fileData = new GridView();
    fileData.DataSource = readings;
    fileData.DataBind();
    fileData.AlternatingRowStyle.BackColor = 
           System.Drawing.ColorTranslator.FromHtml("#eee");
    curFileListing.Controls.Add(fileData);
}

Isso funciona bem. Eu não sou tão experiente com o LINQ e tive dificuldades com a parte do fluxo de arquivos.

questionAnswers(3)

yourAnswerToTheQuestion