如何从SQL DBDataReader填充对象列表

时间:2019-05-23 21:36:28

标签: c# sql asp.net database sqldatareader

我正在使用选择查询从数据库中选择大量条目,并希望将它们同时写入对象列表,而不是遍历每个选定的条目并将结果写入对象。我想知道这是否可以在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);
            }

我想知道是否可以在不使用reader.Read()的情况下直接将结果写到employeeList中,以便避免循环遍历每条选定的行,这可能会提高性能。我有可能选择了10,000或50,000多个记录。我仍然想使用相同的类结构和DBDataReader。但是,如果还有其他选择可以实现这一目标,请告诉我

0 个答案:

没有答案