Vet*_*tri 3 c# asp.net stored-procedures
我试图用SqlDataAdapter填充List.但是我无法做到.除了数据适配器之外,还有其他任何方法来填充字符串列表.请帮我解决这个问题.谢谢.
这是我的代码:
public List<String> JSONDataAll()
{
List<String> Users = new List<String>();
con.Open();
SqlCommand cmd = new SqlCommand("sp_sample_Proc", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(Users);
}
Run Code Online (Sandbox Code Playgroud)
最简单的方法是读取您的数据SqlDataReader,然后填写迭代结果集的列表.喜欢:
public List<String> JSONDataAll()
{
List<String> Users = new List<String>();
using (SqlConnection con = new SqlConnection("connectionString"))
{
con.Open();
using (SqlCommand cmd = new SqlCommand("sp_sample_Proc", con))
{
cmd.CommandType = CommandType.StoredProcedure;
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Users.Add(reader.GetString(0)); //Specify column index
}
}
}
}
return Users;
}
Run Code Online (Sandbox Code Playgroud)
在您当前的代码中,您尝试List<string>使用填充DataAdapter.你不能这样做.相反,你可以填写一个DataTable,然后得到一个List<string>像:
DataTable dt = new DataTable();
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
Users = dt.AsEnumerable()
.Select(r => r.Field<string>("ColumnName"))
.ToList();
Run Code Online (Sandbox Code Playgroud)
但是,你不应该这样做.它会导致多次迭代,首先是填充DataTable,第二次是创建List<string>
小智 5
请试试这个
DataTable dt = new DataTable();
da.Fill(dt);
Users = dt.AsEnumerable().Select(n => n.Field<string>(0)).ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15828 次 |
| 最近记录: |