Я использую запрос на выборку для выбора большого количества записей из базы данных и хочу записать их одновременно в список объектов, а не циклически проходить по каждой выбранной записи и записывать результат в объект. Я хотел бы знать, возможно ли это достичь в C #.
Я использую метод reader.Read () для чтения каждой записи из базы данных и каждый раз создаю новый объект, чтобы каждая прочитанная запись могла записать выбранные результаты в объект. Наконец я добавляю объект в список.
Если выбрано 20 000 записей, тогда reader.Read () будет выполнен 20 000 раз, что может занять больше времени и может оказаться неэффективным способом
Иметь класс работника, как показано ниже:
public class Employee
{
[DbField(DbName = "EmployeeID", DbTypeName = "int", IsSelectable = true)]
public int EmployeeID { get; set; };
[DbField(DbName = "EmployeeName", DbTypeName = "string", IsSelectable = true)]
public string EmployeeName { get; set; };
[DbField(DbName = "JoingDate", DbTypeName = "DateTime", IsSelectable = true)]
public DateTime JoingDate { get; set; };
}
Создание списка для хранения объектов
List<Employee> employeeList = new List<Employee>();
Использование запроса ниже для выбора сотрудников из таблицы Employee
Select EmployeeID,EmployerName,JoingDate from Employee
и сохранение результатов в DBDataReader.
Использование приведенного ниже кода для записи выбранных результатов в объект и добавления объекта в список.
while (reader.Read())
{
Employee employee = new Employee()
{
EmployeeID = reader.GetInteger(0),
EmployerName = reader.GetString(1),
joingDate = reader.GetDate(2),
};
employeeList.Add(employee);
}
Я хотел бы знать, могу ли я напрямую записать результаты в employeeList без использования reader.Read (), чтобы избежать циклического прохождения всех выбранных строк, что может повысить производительность. Есть вероятность, что у меня может быть более 10 000 или 50 000 выбранных записей. Я все еще хотел бы использовать ту же структуру классов и DBDataReader. Но если есть какой-либо другой способ добиться этого, пожалуйста, дайте мне знать