Assuming that the Subject has multiple Questions and Answers.
One simple way to do it can be using
Skip and
Take Methods of Linq .This makes you to Skip current record and Take the Next one.
Something like
(from test in obj.Quest where test.subid == res2 select test).Skip(RecordNumber-1).Take(1).Single();
First time the RecordNumber should set to 1 and then on ButtonClick should increment.
And should also reset it if the Subject changes. Pass the RecordNumber as a parameter to the Question() method so that only one method can be reused.
PS: Note that
Peter Leow has mentioned a very valid comment . You should consider Randomize record fetch using Order By in Linq query.
Random Order[
^]