stevenlam505 Ответов: 2

Как получить доступ к datarow внутри datatable, который находится внутри словаря?


Мой текущий код:
IDictionary<string, DataTable> allTables = new Dictionary<string, DataTable>();
            foreach (string table in tableNames)
            {
                DataTable dtbl = new DataTable();
                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]);

                foreach (DataRow row in allTables[table].Rows)
                {
                    Console.WriteLine(row); // This is where I want to see the actual values
                }

            }


То, что я пытаюсь сделать, - это получить доступ к значению ItemArray в классе/объекте "строки" для allTables[таблица]. Данные, которые я ищу, находятся в ItemArray, как можно видеть здесь[^]

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

Я пытался
Console.WriteLine(row);

Но это просто возвращает System.Data.DataRow

2 Ответов

Рейтинг:
5

BillWoodruff

Посмотрите на этот код:

DataTable dtbl = new DataTable();
string selectQuery = "SELECT * FROM " + table;
allTables.Add(table, new DataTable());
вы объявляете переменную DataTable dtbl, а затем никогда не используете ее.

вот как вы можете использовать ItemArray:
foreach (KeyValuePair<string, DataTable> kvp in AllTables)
{
    Console.WriteLine($"Table: {kvp.Key}");

    foreach (DataRow drw in kvp.Value.Rows)
    {
        Console.WriteLine($"\tRow: {kvp.Value.Rows.IndexOf(drw)}");

        for (var j = 0; j < drw.ItemArray.Length; j++)
        {
            var itm = drw.ItemArray[j];
            Console.WriteLine($"\t\tItm {j}: {itm}");
        }
    }
}


Рейтинг:
17

Gerry Schmitz

private void PrintTable(DataTable table)
{
    foreach(DataRow row in table.Rows)
    {
        foreach(DataColumn column in table.Columns)
        {
            Console.WriteLine(row[column]);
        }
    }
}


объект DataRow.Свойство ItemArray (System.Data) | Microsoft Docs[^]