Как получить второй набор результатов из DataReader в Datatable? - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть sp, который возвращает два набора результатов. Мне нужно поместить оба этих элемента в таблицу данных и преобразовать их в модель данных.

Как я могу получить второй набор результатов?

 SqlConnection connection = new SqlConnection(connectionstring);
                ce.Database.Initialize(force: false);    
                connection.Open();

                SqlCommand cmd = new SqlCommand("GetJournal", connection);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;                  

                SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                var dataTable = new DataTable();
                dataTable.Load(reader);
                List<Header> headerList = dataTable.AsEnumerable().Select(values =>
                                                                   new Header
                                                                   {
                                                                       HeaderId = values.Field<Int32>("HeaderId").ToString()                                                                   
                                                                   }).ToList();

                myList1 = headerList;
                myList2 = detailList; <_---- I need to populate detail list

Также является ли наименование всех полей явным образом наиболее эффективным способом загрузки этого списка? Есть ли какая-то сериализация, которую я могу сделать вместо этого? Я могу иметь таблицы до 500 столбцов

1 Ответ

1 голос
/ 24 апреля 2019

Пока считыватель не закрыт, вы можете загрузить дополнительные таблицы. Если у вас есть несколько результатов, я предлагаю вам заполнить DataSet, который может содержать несколько DataTable экземпляров:

public static DataSet ToDataSet(IDataReader reader)
{
    DataSet ds = new DataSet();
    while (!reader.IsClosed)
    {
        DataTable dt = new DataTable();
        dt.Load(reader);
        ds.Tables.Add(dt);
    }

    return ds;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...