1

クエリの結果セットの各行を C# リストに渡す方法

これまで私が試みたのは、結果セットを SQLDataReader に渡し、その内容を C# List 内で反復処理することです。

私が使用したリストのサンプル リファレンスは、次のリンクにありました: How to return SqlDataReader in C# WCF?

//クエリ

        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 に答える