Ler, dividir e exibir um arquivo CSV de várias linhas em c #

Todos,

Eu estou tentando escrever um programa de testbed que eventualmente permitirá que eu pegue um arquivo .txt CSV e coloque seu conteúdo em um arquivo de banco de dados SQLite. Existem centenas de linhas para os arquivos .txt com os quais estou trabalhando.

Aqui está o que eu tenho até agora: um formulário WPF com três botões

Saída: auto-explicativa

Carregar arquivo CSV: aparece uma caixa de diálogo Abrir Arquivo Win32.

Informações do diretório atual: localiza o diretório atual do qual o programa está operando e o exibe.

e um bloco de texto, que exibe várias informações da saída do programa - basicamente, o que eu quiser, coisas como exceções, etc.

Para ler o arquivo de texto, eu implemento o seguinte 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);
            }
        }
    }
}

É uma configuração bastante simples, e o único método com o qual estou tendo problemas ébtnLoad_Click. oStreamReader método recebe ofileName variável da caixa de diálogo como um argumento. Ele abre o arquivo com sucesso. Embora não no final do fluxo de arquivos, uma linha é lida usandovar line = sr.ReadLine();. Em seguida, dividimos a linha em uma matriz usandovar lineWords = line.Split(',');. Posteriormente, o comprimento da matriz lineWords é impresso no bloco de texto usandoOutputConsole.Text = Convert.ToString(lienWords.Length);. O problema é este: parece que apenas um valor está sendo lido do arquivo, o leitor pára na primeira vírgula e, em seguida, deixa de ler. O valor da matriz que está sendo impressa é 1 e apenas um valor é impresso quando eu alteroOutputConsole.Text = Convert.ToString(lineWords.Length) paraOutputConsole.Text = Convert.ToString(lineWords[1]);. Além disso, não é o valor correto. Então, basicamente, eu só tenho um espaço na matriz e não é preenchido com o valor correto.

O que vocês sugerem para mudar isso? Leitura de arquivos em C # nunca foi meu forte.

EDIT: Aqui estão as duas primeiras linhas, como um sampler do que está no arquivo. É a saída do 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

Esses são apenas cabeçalhos.

Segunda linha: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

Eu acredito que a codificação é ANSI.

EDITAR:

Aqui está o bloco "novo" para a leitura de linhas. Funciona bem até agora, agora, há uma necessidade de dividir as coisas em um array 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";
    }

}

questionAnswers(2)

yourAnswerToTheQuestion