Вы можете использовать скрытое поле и выполнять итерацию по копии возвращенных опросов следующим образом:
foreach(Survey s in Surveys){
string val = s.id + ":" + s.<property1> + ":" + s.<property2>;
hiddenField.Value += val +",";
}
Когда вам нужно прочитать из скрытого поля, вы используете String.Split для разделения значений намассивы, использующие ',' в качестве разделителя, и в каждом массиве вы снова разделяете, используя ':'.
В первом разбиении Array1 [0], который будет идентификатором опроса, и Array1 [n! = 0] будетсвойства Survey с id = Array1 [0].Затем массив [n! = 0] будет разделен на Array2.
Я бы предложил обрабатывать пустые значения свойств с пустой строкой или чем-то еще, иначе вы можете получить неравные длины, особенно если вы укажете StringSplitOptions.RemoveEmptyEntries.
Agricfowl