1

如何将查询结果集中的每一行传递给 C# 列表

到目前为止,我尝试将结果集传递给 SQLDataReader,然后在 C# 列表中迭代其内容。

我使用的列表示例参考在此链接中: 如何在 C# WCF 中返回 SqlDataReader?

//询问

        string comm = "SELECT " +
                      "Name" +
                      "Local" +
                      "Employee_Number" +
                      "Employee_Name" +
                      "FROM t_temp_list";

        SqlCommand sel = new SqlCommand(comm,con);

//DataReader
SqlDataReader rdr;

        try
        {
            con.Open();
            rdr= sel.ExecuteReader();
            pullShuffledData(rdr);
        }
        catch(SqlException ex)
        {
            Alert.Show("Error:"+ ex);
        }

//在方法中列出

    public void pullShuffledData(SqlDataReader rdr)
    {
        List<shuffleDataList> callList = new List<shuffleDataList>();
        //callList.Add

        if (rdr != null)
        {
            if (rdr.HasRows)
            {
                while (rdr.Read())
                {
                    //return sqlReader[0].ToString();
                    callList.Add(rdr[0].ToString());
                }
                sqlConn.Close();
            }
            else
            {
              return null;
            }
        }
        return callList; 

但我不知道如何将每个结果集的行输出到列表迭代中的变量中。任何帮助深表感谢。先感谢您

4

1 回答 1

1

假设这shuffleDataList是一个定义为的类:

class shuffleDataList
{
    public string Name {get;set;}
    public string Local {get;set;}
    public string Employee_Number {get;set;}
    public string Employee_Name {get;set;}
}

然后,您可以使用shuffleDataList对象填充列表,如下所示:

public List<shuffleDataList> pullShuffledData(SqlDataReader rdr)
{
    List<shuffleDataList> callList = new List<shuffleDataList>();

    if (rdr != null)
    {
        if (rdr.HasRows)
        {
            while (rdr.Read())
            {
                callList.Add(new shuffleDataList()
                     {
                         Name = rdr.GetString(0), //Name column
                         Local = rdr.GetString(1), //Local column
                         Employee_Number = rdr.GetString(2), //Employee_Number column
                         Employee_Name = rdr.GetString(3), //Employee_Name column
                     });
            }
            sqlConn.Close();
        }
        else
        {
            return null;
        }
    }
    return callList; 
}
于 2013-09-24T12:24:21.113 回答