Lectura, división y visualización de un archivo CSV multilínea en C #

Todos,

Estoy tratando de escribir un programa de prueba que eventualmente me permita tomar un archivo .txt CSV y colocar su contenido en un archivo de base de datos SQLite. Hay cientos de líneas en los archivos .txt con los que estoy trabajando.

Esto es lo que tengo hasta ahora: un formulario WPF con tres botones-

Salida: autoexplicativa.

Cargar archivo CSV: aparece un cuadro de diálogo Abrir archivo Win32.

Información del directorio actual: busca el directorio actual desde el que opera el programa y lo muestra.

y un bloque de texto, que muestra información diversa de la salida del programa, básicamente, lo que yo quiera, cosas como excepciones, etc.

Para leer el archivo de texto, implemento el siguiente código:

using System;
using System.Data;
using System.Data.SQLite;
using System.IO;
using System.Windows;
using System.Windows.Controls;

namespace C_Sharp_SQLite_Testbed
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        private static string fileName;
        public MainWindow()
        {
            InitializeComponent();
        }

        private void btnLoad_Click(object sender, RoutedEventArgs e)
        {
            Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
            dlg.FileName = "Document";
            dlg.DefaultExt = ".txt";
            dlg.Filter = "Text Documents (.txt)|*.txt";

            Nullable<bool> result = dlg.ShowDialog();

            if (result == true)
            {
                fileName = dlg.FileName;
                OutputConsole.Text = " ";
                OutputConsole.Text = fileName;

                try
                {
                    using (StreamReader sr = new StreamReader(fileName))
                    {
                        while (!sr.EndOfStream)
                        {
                            var line = sr.ReadLine();
                            var lineWords = line.Split(',');
                            OutputConsole.Text = Convert.ToString(lineWords.Length);

                        }
                    }
                }
                catch (Exception ex)
                {
                    OutputConsole.Text = " ";
                    OutputConsole.Text = ex.Message;
                }
            }
         }

        private void btnExit_Click(object sender, RoutedEventArgs e)
        {
            Environment.Exit(0);
        }

        private void btnInfo_Click(object sender, RoutedEventArgs e)
        {
            Environment.CurrentDirectory = Environment.GetEnvironmentVariable("windir");
            DirectoryInfo info = new DirectoryInfo(".");
            lock (info)
            {
                OutputConsole.Text = String.Format("Directory info:    " + info.FullName);
            }
        }
    }
}

Es una configuración bastante simple, y el único método con el que estoy teniendo problemas es enbtnLoad_Click. losStreamReader método recibe elfileName Variable del cuadro de diálogo como argumento. Se abre con éxito el archivo. Si bien no se encuentra al final de la secuencia de archivos, se lee una línea usandovar line = sr.ReadLine();. Luego dividimos la línea en una matriz usandovar lineWords = line.Split(',');. Después, la longitud de la matriz de lineWords se imprime en el bloque de texto usandoOutputConsole.Text = Convert.ToString(lienWords.Length);. El problema es el siguiente: parece como si solo se estuviera leyendo un valor del archivo, el lector se detiene en la primera coma y luego deja de leer. El valor de matriz que se está imprimiendo es 1, y solo se imprime un valor cuando cambioOutputConsole.Text = Convert.ToString(lineWords.Length) aOutputConsole.Text = Convert.ToString(lineWords[1]);. Además, no es el valor correcto. Básicamente, solo tengo un espacio en la matriz y no está lleno con el valor correcto.

¿Qué sugieren ustedes para cambiar esto? La lectura de archivos en C # nunca ha sido mi fuerte.

EDITAR: Aquí están las dos primeras líneas, como una muestra de lo que está en el archivo. Es la salida de Kinect.

Time,HLState,HLX,HLY,HLZ,KLState,KLX,KLY,KLZ,ALState,ALX,ALY,ALZ,FLState,FLX,FLY,FLZ,HRState,HRX,HRY,HRZ,KRState,KRX,KRY,KRZ,ARState,ARX,ARY,ARZ,FRState,FRX,FRY,FRZ,lknfx,lknvg,rknfx,rknvg

Esos son sólo los encabezados.

Segunda linea:700449555,2,-0.2912986,-0.1036692,1.472573,2,-0.2512482,-0.472762,1.416523,1,-0.2034467,-0.9132867,1.340637,1,-0.1271965,-0.9447169,1.280763,2,-0.197726,-0.09682589,1.596856,2,-0.1457276,-0.5412285,1.782268,2,-0.184881,-0.5280698,1.408923,2,-0.1630141,-0.537811,1.523656,178.867138094441,12.3859203137083,64.9231529324685,142.847159325228

Creo que la codificación es ANSI.

EDITAR:

Aquí está el "nuevo" bloque para la lectura de líneas. Funciona bien hasta ahora, ahora es necesario dividir las cosas en una matriz 2D.

try
{
    using (StreamReader sr = new StreamReader(fileName))
    {
        lines = File.ReadAllLines(fileName);                        
    }

    int numberLines = lines.Length;
    OutputConsole.Text = " ";
    OutputConsole.Text += numberLines + " ";
    for (int i = 0; i < numberLines; i++)
    {
        OutputConsole.Text += lines[i] + "\n";
    }

}

Respuestas a la pregunta(2)

Su respuesta a la pregunta