SQL查询结果到数组/列表

Jey*_*ari 2 c# sql sqlcommand

以下是用于查询数据库以获取用户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();
Run Code Online (Sandbox Code Playgroud)

产量:5629

实际上,名单Usersgrpid = 1805629,5684,5694.

如何在列表或数组中读取结果?

Mar*_*ell 8

只是:

List<int> results = new List<int>();
using (SqlDataReader reader = command.ExecuteReader())
{
    while (reader.Read())
    {
        results.Add((int)reader["userid"]));
    }
}
// use results
Run Code Online (Sandbox Code Playgroud)

但是,您可能会发现像"Dapper"这样的工具可以节省时间

var results = con.Query<int>("Select userid from UserProfile where grpid=@id",
    new { id }).AsList();
Run Code Online (Sandbox Code Playgroud)

  • @JG'sSpark强调:我*强烈推荐像Dapper这样的工具,而不是原始的ADO.NET; 它节省了大量的时间和不必要的错误; 不过,我很偏颇 (3认同)

apo*_*ene 5

只需定义一个List,并使用如下:

List<string> Users = new List<string>();
using (SqlDataReader reader = command.ExecuteReader())
{
    while (reader.Read())
    {
        Users.Add(reader[0].ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)