Это может помочь вам:
public class QuestionAnswerMap
{
public string Question { get; set; }
public string Answer { get; set; }
}
class Program
{
static void Main(string[] args)
{
var list = new List<QuestionAnswerMap>();
list.Add(new QuestionAnswerMap() { Question = "Q1", Answer = "A1" });
list.Add(new QuestionAnswerMap() { Question = "Q1", Answer = "A2" });
list.Add(new QuestionAnswerMap() { Question = "Q2", Answer = "A3" });
list.Add(new QuestionAnswerMap() { Question = "Q2", Answer = "A4" });
list.Add(new QuestionAnswerMap() { Question = "Q2", Answer = "A5" });
var result = list.GroupBy(y => y.Question).ToDictionary(y => y.Key);
foreach (var item in result)
{
Console.WriteLine("Question: " + item.Key);
foreach(var value in item.Value.ToList())
Console.WriteLine("Answer: {0}", value.Answer);
}
Console.ReadLine();
}
}
Я иллюстрирую вашу первую таблицу с QuestionAnswerMap
. По сути, вы группируете по каждому вопросу, чтобы получить ответы по каждому вопросу. Когда у вас есть это, не должно быть сложным динамически построить сетку.