[英]SQL query result to array/List
以下是用於查詢數據庫以獲取用戶ID列表的C#代碼:
int id;
con = new SqlConnection(Properties.Settings.Default.ConnectionStr);
con.Open();
id = 180;
SqlCommand command = new SqlCommand("Select userid from UserProfile where grpid=@id", con);
command.Parameters.AddWithValue("@id", id);
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.Read())
{
Console.WriteLine(String.Format("{0}", reader["userid"]));
}
}
con.Close();
產量:5629
實際上,的列表Users
具有grpid = 180
是5629,5684,5694。
如何在列表或數組中讀取結果?
只是:
List<int> results = new List<int>();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
results.Add((int)reader["userid"]));
}
}
// use results
但是,您可能會發現像“Dapper”這樣的工具可以節省時間
var results = con.Query<int>("Select userid from UserProfile where grpid=@id",
new { id }).AsList();
只需定義一個List,並使用如下:
List<string> Users = new List<string>();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Users.Add(reader[0].ToString());
}
}
嘗試這個 :
var userIds = new List<int>();
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
userIds.Add(reader.GetInt32(0));
}
}
您可以使用此擴展方法:
public static class DbExtensions
{
public static List<T> ToList<T>(this IDataReader reader, int columnOrdinal = 0)
{
var list = new List<T>();
while(reader.Read())
list.Add((T)reader[columnOrdinal]);
return list;
}
}
現在您可以這樣使用它:
List<int> userIdList;
using (var con = new SqlConnection(Properties.Settings.Default.ConnectionStr))
{
using(var command = new SqlCommand("Select userid from UserProfile where grpid=@id", con))
{
command.Parameters.AddWithValue("@id", id);
con.Open();
using (SqlDataReader rd = command.ExecuteReader())
userIdList = rd.ToList<int>();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.