Мои DataTables в этом методе создают CSV-файлы, которые в два раза больше строк, которые они содержат, почему? - PullRequest
0 голосов
/ 26 июня 2019

У меня есть метод, описанный ниже, я пытаюсь очистить текстовый файл на основе некоторых критериев, с помощью каждого, что я уже получил, и все работает, создает и фильтрует, НО что-то, что я заметил во время моего последнего набора тестов,что число строк, ожидаемое в генерируемых им файлах csv (только для целей тестирования), в два раза превышает размер фактической таблицы данных, поэтому первая таблица данных в моем методе называется «output», число строк которой равно 2257, но CSV,В созданном файле содержится 4514 записей, а во втором csv, называемом outputLoc, количество строк равно 1402, но файл csv заканчивается 2804 записями.

Вот код, который в настоящее время выполняется и работает, но генерирует вышеуказанные числа.

try
{
    DataTable d = processFileData(concatFile);

    // REMOVES ALL RECORDS WITH A CLASS THAT IS NON-LABEL CLASS                    
    var query = from r in d.AsEnumerable()
                where !returnClass().Any(r.Field<string>("Column7").Contains)
                select r;

    DataTable output = query.CopyToDataTable<DataRow>(); // Should have 2257 records
    int dtoutputCount = output.Rows.Count;

    for (int i = 0; i < dtoutputCount; i++)
    {
        DataRow rows = output.Rows[i];
        output.ImportRow(rows);
    }

    ToCSV(output, ftype,"filteredclass");  // Only writing to csv for testing and verification of data

    //// REMOVES ALL RECORDS THAT HAVE A NON-SELLING OR UNOPENED LOCATION
    var queryLoc = from rL in output.AsEnumerable()
                   where !returnLocations().Any(rL.Field<string>("Column2").Contains)
                   select rL;

    DataTable outputLoc = queryLoc.CopyToDataTable<DataRow>();
    int dtoutputLocCount = outputLoc.Rows.Count;

    for (int i = 0; i < dtoutputLocCount; i++)
    {
        DataRow rows = outputLoc.Rows[i];
        outputLoc.ImportRow(rows);
    }

    ToCSV(outputLoc, ftype,"filteredlocation");  // Only writing to csv for testing and verification of data

}
catch (Exception e)
{
    Console.WriteLine(e.InnerException);
}

Как только все заработает, как и ожидалось, мы в конечном итоге избавимся от вызовов ToCSV, чтобы мы могли работать с данными в памяти и как только они все очистились, мы вызываем их для получения окончательного файла.что было отфильтровано.

Любая помощь будет оченьэто важно для определения того, почему я получаю файл, который в два раза больше ожидаемого.

...