I have one row coming from the database
select \"John\" Name, \"Male\" Gender, 20 Age, \"Rex\" PetName, \"Male\" PetGender, 5
You were pretty close to solution with the Query method. If you don't have an Id column, then you can provide a splitOn argument:
Query
Id
splitOn
connection.Query<Person, Pet, Tuple<Person, Pet>>(sql, (person, pet) => Tuple.Create(person, pet), splitOn: "PetName");