0

大家晚上好/早上好,

昨天我收到了一些关于如何遍历一个表并将其值分配给一个哈希表的帮助,我现在使用下面的代码可以正常工作,下面的方法总共返回了 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;
        }
    }

当我将鼠标悬停在“详细信息”上时,它的布局如下

Question1      4
Question2      5
Question3      Y
Question4      9
Question5      10

等等一直到 Question10

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

从上述方法返回后,这是我的代码

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 是一个哈希表并保存返回的值,我试图将 Q1answer.Text 分配给 ExamAnswers 中 Question1 的值,但我在努力实现这一目标,我想说

Q1Answer.Text = ExamAnswers.key["Question1"].value;

但是没有用,有人可以帮助我解决问题。

谢谢

4

4 回答 4

0

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

于 2012-05-03T21:26:38.350 回答
0

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

Q1Answer.Text = ExamAnswers["Question1"].ToString();
于 2012-05-03T21:09:18.817 回答
0

做起来更简单:

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

        string a = hash[1].ToString();
于 2012-05-03T21:09:27.963 回答
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;
      ...
}
于 2012-05-03T21:12:23.003 回答