Получить имена столбцов и строки из DbDataReader в список - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь выполнить хранимую процедуру. Имя хранимой процедуры дается динамически. В основном это для набора отчетов. Когда пользователь выбирает имя отчета из выпадающего списка, он передает имя sp в результат действия, который возвращает набор данных, мне удалось получить результаты из sp в List dataList. Сейчас я пытаюсь получить имена столбцов, которые будут добавлены в список dataList. Любая помощь будет оценена

var cmd = _ctx.Database.GetDbConnection().CreateCommand();

cmd.CommandText = uspName;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@inparam_Fromdate", DateTime.Now.AddDays(1));
cmd.Parameters.Add(new SqlParameter("@inparam_Todate", "DateTime.Now.AddDays(2)));

cmd.Connection.Open();

using (var reader = cmd.ExecuteReader())
{
    List<string[]> dataList = new List<string[]>();

    while (reader.Read())
    {
        string[] tempRow = new string[reader.FieldCount];
        for (var i = 0; i < reader.FieldCount; i++)
        {
            tempRow[i] = Convert.ToString(reader.GetValue(i));
        }

        dataList.Add(tempRow);
    }


}

1 Ответ

0 голосов
/ 18 марта 2020
cmd.CommandText = uspName;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@inparam_Fromdate", "2019-05-05"));
cmd.Parameters.Add(new SqlParameter("@inparam_Todate", "2019-05-22"));

cmd.Connection.Open();

using (var reader = cmd.ExecuteReader())
{
    var dataList = new List<string[]>();

    var tempCol = new string[reader.FieldCount];
    for (var i = 0; i < reader.FieldCount; i++)
    {
        tempCol[i] = reader.GetName(i);

    }
    dataList.Add(tempCol);


    while (reader.Read())
    {
        var tempRow = new string[reader.FieldCount];
        for (var i = 0; i < reader.FieldCount; i++)
        {
            tempRow[i] = Convert.ToString(reader.GetValue(i));
        }

        dataList.Add(tempRow);
    }

}
...