stevenlam505 Ответов: 1

Как редактировать строки внутри отдельных таблиц данных внутри словаря в C#?


Я пытаюсь написать сценарий на C#, который позволяет мне захватывать информацию из базы данных SQLite, очищать ее (т. е. удалять символы, такие как|,~,/, \ и т. д.) и хранить ее в базе данных SQL Server. До сих пор я мог захватывать информацию из базы данных SQLite в виде превращения каждой таблицы в базе данных SQLite в класс DataTable, и чтобы сохранить всю базу данных, я сохранил эти классы DataTable внутри словаря, где ключ-это имя таблицы, а значение-DataTable.

Что я уже пробовал:

Это мой текущий код
public static IDictionary<string, DataTable> GetSQLiteData(string liteConString, IList<string> tableNames)
{
    SQLiteConnection liteCon = new SQLiteConnection(liteConString);
    liteCon.Open();

    IDictionary<string, DataTable> allTables = new Dictionary<string, DataTable>();

    foreach (string table in tableNames)
    {
        string selectQuery = "SELECT * FROM " + table;
        allTables.Add(table, new DataTable());

        SQLiteCommand cmd = new SQLiteCommand(selectQuery, liteCon);
        SQLiteDataAdapter sqliteDAP = new SQLiteDataAdapter(cmd);
        sqliteDAP.Fill(allTables[table]);
    }

    return allTables;
}


Значение свойств DataTable внутри словаря allTables хранится в значении строк DataTable, так как же я буду редактировать каждую отдельную строку внутри DataTable, чтобы удалить такие символы, как|,~, - и т. д.

BillWoodruff

есть ли в таблицах данных столбцы разных типов ... то есть Int, String ... и вы хотите редактировать только те столбцы/ячейки типа String ? или вы знаете имена конкретных столбцов, содержащих строки ? каждый объект DataTable одинаковы по строению ?

stevenlam505

Каждая таблица данных отличается, однако я знаю, какие конкретные столбцы в каждой таблице данных я хочу изменить. Все столбцы в каждой таблице данных являются строками.

1 Ответов

Рейтинг:
8

BillWoodruff

Я собираюсь ответить на этот вопрос немного более подробно, чем ваш сценарий ... "Все столбцы в каждой таблице данных являются строками" ... требует, в надежде, что это будет полезно другим.

Предположим, что только определенные столбцы имеют тип String: выберите все столбцы типа String:

IEnumerable<DataColumn> stringcolumns = table.Columns.Cast<DataColumn>().Where((DataColumn clm) => clm.DataType == typeof(string));
Вы уже знаете, как перебирать все строки, а затем перебирать все столбцы в каждой строке.

Итак, в самом внутреннем цикле вы можете изменить или удалить все, что угодно:
string value = row[col].ToString();

if (value.Contains('|'))
{
    row.SetField(col, value.Replace("|", string.Empty));
}