Если это на самом деле a string (почему?), вы должны отправить его на string и использовать int.Parse:
int questionId = int.Parse(item.Field<string>("QuestionId"));
Если вы действительно не знаете, что это такое, вы можете использовать System.Convert.ToInt32:
int questionId = System.Convert.ToInt32(item["QuestionId"]);
Ответ 2
Если то, что помещено в эту ячейку, на самом деле просто int, используйте:
(int)item["QuestionId"]
В противном случае проверьте тип среды выполнения item["QuestionId"], если это byte, например, используйте (byte)item["QuestionId"]. Если вы не уверены, то: