从哈希表中检索值

时间:2012-05-03 21:05:08

标签: c# asp.net hashtable

晚上好/早上好,

昨天我收到了一些关于如何遍历表并将其值分配给哈希表的帮助,我现在使用下面的代码正确地工作,从下面的方法返回总共10个问题

public Hashtable GetExamAnswers(int UserID)
    {
        try
        {
            SqlConnection Connection = new SQLAccess().CreateConnection();
            SqlCommand Command = new SqlCommand("GetAllExamAnswersForUser", Connection);
            Command.CommandType = System.Data.CommandType.StoredProcedure;
            Command.Parameters.AddWithValue("@UserID", UserID);
            SqlDataReader da = Command.ExecuteReader();
            int i = 1;
            while (da.Read())
            {
                Details.Add("QuestionNumber" + i, da["UserAnswer"]);
                i = i + 1;
            }
            Connection.Close();
            da.Close();
            return Details;
        }
        catch
        {
            Console.WriteLine("Problem Updating the User`s Details");
            return Details;
        }
    }

public Hashtable GetExamAnswers(int UserID) { try { SqlConnection Connection = new SQLAccess().CreateConnection(); SqlCommand Command = new SqlCommand("GetAllExamAnswersForUser", Connection); Command.CommandType = System.Data.CommandType.StoredProcedure; Command.Parameters.AddWithValue("@UserID", UserID); SqlDataReader da = Command.ExecuteReader(); int i = 1; while (da.Read()) { Details.Add("QuestionNumber" + i, da["UserAnswer"]); i = i + 1; } Connection.Close(); da.Close(); return Details; } catch { Console.WriteLine("Problem Updating the User`s Details"); return Details; } }

当我将鼠标悬停在“细节”上时,它的布局就像这样

Question1      4
Question2      5
Question3      Y
Question4      9
Question5      10
等一直到问题10

我现在正试图从哈希表中获取值并将相关值分配给相关的文本框

从上面的方法返回之后继承我的代码

Question1 4 Question2 5 Question3 Y Question4 9 Question5 10

ExamAnswers是一个哈希表并保存返回的值,我试图在ExamAnswers中分配Q1的值为问题1的Q1answer.Text,但是我在如何实现这个目标上挣扎,我试着说

ExamAnswers = obj_Methods.GetExamAnswers(Convert.ToInt32(Request.QueryString["uid"]));
        if (ExamAnswers.Count > 0)
        {
            foreach (DictionaryEntry dict in ExamAnswers)
            {
              Q1Answer.Text = dict......;
              Q2Answer.Text = dict......;
              Q3Answer.Text = dict......;

            }
        }

ExamAnswers = obj_Methods.GetExamAnswers(Convert.ToInt32(Request.QueryString["uid"])); if (ExamAnswers.Count > 0) { foreach (DictionaryEntry dict in ExamAnswers) { Q1Answer.Text = dict......; Q2Answer.Text = dict......; Q3Answer.Text = dict......; } }

但无济于事,有人可以帮我解决问题。

谢谢

4 个答案:

答案 0 :(得分:0)

在这种情况下,您不会使用foreach语句,因为您提前知道了键并且它们只映射到一个控件。您只需执行您发布的代码,其中

Q1Answer.Text = ExamAnswers["Question1"].ToString();

答案 1 :(得分:0)

做得更简单:

        Hashtable hash = new Hashtable();
        hash.Add(1, "a");
        hash.Add(2, "b");

        string a = hash[1].ToString();

答案 2 :(得分:0)

您在第一个代码段中将密钥设置为'QuestionNumber' + i而不是'Question' + i。确保您正在寻找正确的密钥值。

此外,您不需要遍历ExamAnswers:

ExamAnswers = obj_Methods.GetExamAnswers(Convert.ToInt32(Request.QueryString["uid"]));

if (ExamAnswers.Count > 0)
{
      Q1Answer.Text = ExamAnswers["QuestionNumber1"].value;
      Q2Answer.Text = ExamAnswers["QuestionNumber2"].value;
      Q3Answer.Text = ExamAnswers["QuestionNumber3"].value;
      ...
}

答案 3 :(得分:0)

实际上,在这种情况下,您可能希望使用数组来存储答案。在此示例中使用哈希表没有任何好处。