public static void Main()
new {ID=1, Survey_Id="Apple", Answer=1, User="Jones"},
new {ID=2, Survey_Id="Apple", Answer=1, User="Smith"},
new {ID=3, Survey_Id="Banana", Answer=2, User="Smith"},
new {ID=4, Survey_Id="Apple", Answer=3, User="Jane"},
new {ID=5, Survey_Id="Banana", Answer=2, User="John"},
var result = table.GroupBy( x => x.Survey_Id ).Select( x => new { Survey_Id=x.Key, Answers=x.GroupBy( y => y.Answer ).Select( y => new { Answer=y.Key, Count=y.Count(), Users=y.Select( z => z.User)})} );
foreach( var survey in result)
Console.WriteLine($"Survey {survey.Survey_Id}");
foreach (var answer in survey.Answers)
Console.WriteLine($"\tAnswer {answer.Answer} has Count {answer.Count} from Users {string.Join(", ", answer.Users)}");