Как я могу проанализировать CSV-файл и вписать его в существующую таблицу в C #? - PullRequest
0 голосов
/ 07 октября 2010

Хорошо, сейчас у меня есть функция parseCSV, которая возвращает мне таблицу в формате 2D, например:

List<string[]> data = parseCSVFle(file);

Теперь я бы хотел, чтобы строки в «данных» располагались в определенном порядке. Этот порядок определяется первым столбцом в temp (то есть первым элементом массива строк). Порядок поддерживается в строковом массиве в другом месте.

String[] dogs = {"rottweiler", "germanshepherd", "dalmatian"};

Как переставить «данные», чтобы отразить порядок в «собаках»?

Дополнительные ограничения включают

  • Строка в 'dogs' может быть подстрокой строки в 'data'. В этом случае отображается строка из «dogs».
  • Строка в «dogs» может вообще отсутствовать в «data». В этом случае строка из «dogs» добавляется в 2D-таблицу, но с пробелами в других столбцах.

Пример данных

data_initial

dalmatian 45 52 rottweiler 58

data_final

rottweiler 58 - germanshepherd - - dalmatian 45 52

Спасибо за внимание, все.

1 Ответ

0 голосов
/ 07 октября 2010

Если я правильно вас понимаю, вы хотите отсортировать содержимое строк по их заголовочной записи, которая является одной из dogs - в этом случае пользовательский компаратор сортировки сделает свое дело.

static string[] dogs = {"rottweiler", "germanshepherd", "dalmatian"};

public static int CompareRows(string[] row1, string[] row2)
{
    int idx1 = Array.IndexOf(dogs,row1[0]);
    int idx2 = Array.IndexOf(dogs,row2[0]);

    if(idx1 == idx2)
        return 0;
    else return (idx1 < idx2) ? -1 : 1;
}

public static void testArraySort()
{
    string [] data1 = { "germanshepherd", "rufus", "george"};
    string[] data2 = { "dalmatian", "mimi", "dalma" };
    string[] data3 = { "rottweiler", "fifi", "dawg" };

    List<string[]> data = new List<string[]>() { data1, data2, data3 };
    data.Sort(CompareRows);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...