Eri*_*rik 11 c# sql sqldatareader
如何添加SqlDataReader
返回通用List的值?我有一个方法,我SqlDataReader
用来CategoryID
从Category
表中获取.我想添加所有CategoryID
通用列表.
这个剂量不起作用,因为它只返回一个categoryID
,这是最后一个.我想将所有内容添加categoryID
到列表中,然后返回它们.
我怎么做?
SqlConnection connection = null;
SqlDataReader reader = null;
SqlCommand cmd = null;
try
{
connection = new SqlConnection(connectionString);
cmd = new SqlCommand("select CategoryID from Categories", connection );
connection.Open();
List<int> catID = new List<int>();
dr = cmd.ExecuteReader();
while (dr.Read())
{
catID.Add(Convert.ToInt32(dr["CategoryID"].ToString()));
}
}
finally
{
if (connection != null)
connection.Close();
}
return catID;
Run Code Online (Sandbox Code Playgroud)
Dar*_*rov 15
尝试这样,它更好,更安全,使用延迟加载,更少的代码,工作,...:
public IEnumerable<int> GetIds()
{
using (var connection = new SqlConnection(connectionString))
using (var cmd = connection.CreateCommand())
{
connection.Open();
cmd.CommandText = "select CategoryID from Categories";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
yield return reader.GetInt32(reader.GetOrdinal("CategoryID"));
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后:
List<int> catIds = GetIds().ToList();
Run Code Online (Sandbox Code Playgroud)
您当前的代码应该可以工作,假设catID
确实在 try 块之前声明,否则将无法编译。
归档时间: |
|
查看次数: |
22465 次 |
最近记录: |