Well, nobody has asked exactly the same question.
But abstractly speaking, if you have three questions q1, q2, q3 and you want the value of the last answered the operator you need is the ternary operator ?
Something along the lines: IsAnswered(q3)?(q3):(IsAnswered(q2)?(q2):(q1))
Of course q1 and q2 may be pointing to q3, but q3 was not answered (refused, for example). Then instead of the shortcut above you’d need to put the full enabling conditions for each question, rather than the IsAnswered() function.
Type of conditional expression cannot be determined because there is no implicit conversion between WB.Core.SharedKernels.DataCollection.RosterVector[] and int[]
A string is a universal storage container that usually fits in almost anything else.
Yet bear in mind not to loose any information with that if it is essential.
For example, if you have two Sergiys in your household, storing the name “Sergiy” will loose the information, which of the two it is. (while storing the index will preserve that).
So, even though it is less readable, I’d store “1; 3” instead of “Sergiy; Maryna” or else you need to take care of the duplicates, and will still need to do a search in the data to discover other properties of the selected persons (like age or employment, for example).