You must not do this! Your reader should be closed as soon as possible. You do not want to keep it open while listing. It’s better to just create an explicit list and return it.
var cmd = SqlCommand("select [EmpName] from [dbo].[Emp]");
List<string> results = new List<string>();
using (var rdr = cmd.ExecuteReader()) {
while (rdr.Read())
results.Add((string) rdr["EmpName"]);
}
return results;
You can use Linq expressions for the DataReader by doing it:
using (var rdr = cmd.ExecuteReader()) {
results = (from row in rdr.Cast<DbDataRecord>()
select (string)row["EmpName"]).ToList();
}
, ToList(), , .
Edit
, , DataReader . MSDN:
SqlDataReader, SqlConnection SqlDataReader, SqlConnection, . SqlDataReader. , , .
, .