Чтение, разбиение и отображение многострочного CSV-файла в C #

Все,

Я пытаюсь написать тестовую программу, которая в конечном итоге позволит мне взять CSV-файл .txt и поместить его содержимое в файл базы данных SQLite. Сотни строк в файлах .txt, с которыми я работаю.

Вот что у меня есть: форма WPF с тремя кнопками:

Выход: понятно

Загрузить файл CSV: появляется диалоговое окно Win32 Open File.

Информация о текущем каталоге: находит текущий каталог, из которого работает программа, и отображает его.

и текстовый блок, который отображает различную информацию из выходных данных программы - в основном, что бы я ни хотел, такие вещи, как исключения и т. д.

Чтобы прочитать текстовый файл, я реализую следующий код:

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 M,ainWindow : 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);
            }
        }
    }
}

Это довольно простая установка, и единственный метод, с которым у меня возникают проблемы, заключается вbtnLoad_Click,StreamReader метод получаетfileName переменная из диалогового окна в качестве аргумента. Он успешно открывает файл. Хотя не в конце файлового потока, строка читается с использованиемvar line = sr.ReadLine();, Затем мы разбиваем строку на массив, используяvar lineWords = line.Split(',');, После этого длина массива lineWords выводится в текстовый блок с помощьюOutputConsole.Text = Convert.ToString(lienWords.Length);, Проблема в следующем: может показаться, что из файла читается только одно значение, читатель останавливается на первой запятой, а затем прекращает чтение. Значение печатаемого массива равно 1, и при изменении только одно значениеOutputConsole.Text = Convert.ToString(lineWords.Length) вOutputConsole.Text = Convert.ToString(lineWords[1]);, Кроме того, это не правильное значение. Так что в основном у меня только один пробел в массиве, и он не заполнен правильным значением.

Что вы, ребята, предлагаете изменить это? Чтение файлов в C # никогда не было моей сильной стороной.

РЕДАКТИРОВАТЬ: Вот первые две строки, как образец того, что находится в файле. Это выход 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

Это просто заголовки.

Вторая линия: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

Я считаю, что кодировка ANSI.

РЕДАКТИРОВАТЬ:

Вот «новый» блок для чтения строк. До сих пор работает хорошо, теперь нужно разделить вещи на 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";
    }

}

Ответы на вопрос(2)

Ваш ответ на вопрос