如何填写列表<;字符串>;使用SqlDataAdapter

本文关键字:gt 使用 SqlDataAdapter 字符串 lt 何填写 列表 | 更新日期: 2023-09-27 18:22:15

我正在尝试用SqlDataAdapter填充列表。但我做不到。除了数据适配器,还有其他方法可以填充字符串列表吗。请帮我解决这个问题。提前谢谢。

这是我的代码:

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);
        }

如何填写列表<;字符串>;使用SqlDataAdapter

最简单的方法是通过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;
}

在当前代码中,您正在尝试使用DataAdapter填充List<string>。你不能那样做。相反,你可以填写一个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();

但是,你不应该那样做。这将导致多次迭代,第一次用于填充DataTable,第二次用于创建List<string>

请尝试此

DataTable dt = new DataTable();
da.Fill(dt);
Users = dt.AsEnumerable().Select(n => n.Field<string>(0)).ToList();

如果数据库中的类型不同,您可以使用它,它将接受所有类型。

var dataTable= new DataTable();
dataTable.Fill(dataTable);
var users = dataTable.AsEnumerable().Select(n => n.ItemArray).ToList();

您将获得一个不错的元素列表结果:

[[3,"Adam","Smith","adamSmith@gmail.com","Kokos",1],
[5,"Dominika","Smith","dominikaSmith@gmail.com","Domis",2]]