如何在C#中使用存储过程和datareader返回记录列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C#中使用存储过程和datareader返回记录列表相关的知识,希望对你有一定的参考价值。

我想在C#中使用存储过程和datareader返回记录列表。目前,它给了我错误

无法将类型'ClsHorseTracker'隐式转换为'System.Collections.Generic.List'

码:

public List<ClsHorseTracker> HorseTrackerList()
{
    clsUtilities clsUtilities = new clsUtilities();
    DataSet ds;
    List<ClsHorseTracker> clsHorseTracker = new List<ClsHorseTracker>();

    string sSQL = "exec HorseDetails";
    ds = clsUtilities.GetDataSet(sSQL);

    SqlCommand cmd = new SqlCommand();

    using (SqlDataReader reader = cmd.ExecuteReader())
    {
        if (reader.HasRows)
        {
            while (reader.Read())
            {
                clsHorseTracker = new ClsHorseTracker
                    {
                        HorseName = Convert.ToString(reader["HorseName"]),
                        HorseTypeName = Convert.ToString(reader["HorseTypeName"]),
                    };
            }
        }
    }

    return clsHorseTracker;
}
答案

clsHorseTracker是ClsHorseTracker的列表。因此,您需要在“while”循环中将新对象添加到列表中,而不是将对象分配给列表尝试此操作

public List<ClsHorseTracker> HorseTrackerList()
        {
         clsUtilities clsUtilities = new clsUtilities();
           DataSet ds;
           List<ClsHorseTracker> clsHorseTracker = new List<ClsHorseTracker>();

            string sSQL;
            sSQL = "exec HorseDetails";
            ds = clsUtilities.GetDataSet(sSQL);

            SqlCommand cmd = new SqlCommand();

            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        clsHorseTracker.Add(new ClsHorseTracker
                        {

                            HorseName = Convert.ToString(reader["HorseName"]),
                            HorseTypeName = Convert.ToString(reader["HorseTypeName"]),

                        });
                    }
                }


            }


            return clsHorseTracker;
        }

以上是关于如何在C#中使用存储过程和datareader返回记录列表的主要内容,如果未能解决你的问题,请参考以下文章

存储过程正确运行,但 DataReader 得到错误结果...有时

使用 DataReader 填充嵌套集合

DataReader 中的倍数表

寻找重置或清除 DataReader 的方法

使用 DataReader 将数据库多条记录存储到变量中

存储过程无法得到返回型参数