Carga de archivos, se lee en la memoria y se usa como archivo de texto, ¿hay alguna forma mejor?

Tengo una aplicación web alojada en la intranet donde el usuario cargará un archivo de texto con datos delimitados por el espacio en 5 columnas. No deseo guardar el archivo, así que solo quería usarlo en la memoria. Probé muchos ejemplos diferentes fuera de la web y ninguno funcionó. Finalmente, un compañero de trabajo me mostró cómo hacer esto. Aquí está el código y me pregunto si hay una mejor manera de hacerlo. Al final, todo lo que quiero es una forma de vincular los datos a una vista de cuadrícula o repetidor para verlos y luego almacenarlos en una base de datos (SQL Server).

El ID de la etiqueta asp del archivo de carga es SurveyFileUpload
El SurveyDate es un campo de entrada asp:

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);
}

Esto funciona bien. No tengo mucho conocimiento de LINQ y tuve dificultades con la parte de flujo de archivos.

Respuestas a la pregunta(3)

Su respuesta a la pregunta