Извиняюсь, я не точно ответил. Конструкция предложенная
darkelf DataRow[] drvariants = key;
вообще не компилируется. Я делал
DataRow[] drvariants = (DataRow[])key;
и вот тогда выдавало ошибку описанную выше. Хотя это, возможно, и не важно.
Согласно задаче, в keys[key] хранятся ответы студентов на тестовые вопросы. Для последующего отделения правильных.
//Экземпляр clientAnswer для хранения ответов пользователей
Hashtable clientAnswer = new Hashtable();
//Экземпляр keys для хранения правильных ответов пользователей
Hashtable keys = new Hashtable();
.................................................................
//Обработчик события нажатия кн. "Результат"
private void btnCheck_Click(object sender, EventArgs e)
{
//Создаем счетчик
double counter = 0;
//Перебираем все ключи экземпляра key класса Hashtable, в котором хранятся ответы пользователя.
foreach (object key in keys.Keys)
{
bool flag = true;
DataRow[] drvariants = (DataRow[])keys[key];//ошибка
bool[] answers = (bool[])clientAnswer[key];
int i = 0;
foreach (DataRow drvariant in drvariants)
{
if (((bool)drvariant["isRight"]) == answers[i++])
{
continue;
}
else
{
flag = false;
break;
}
}
if (flag)
{
++counter;
}
}
//Делим кол-во правильных ответов на общее число ответов, результат умножаем на 100
int result = (int)(counter / dsTests.Tables["Questions"].Rows.Count * 100);
MessageBox.Show(String.Format("Вы ответили правильно на {0}% вопросов.", result), "Результат тестирования", MessageBoxButtons.OK, MessageBoxIcon.Information);
}