c # – Grouping table data as column headings in an Excel spreadsheet

I have a questionnaire application that I'm building for one of our teams, and I have a problem with making the report the way it wants it (if at all possible). What I currently have is:

var completedSurveys = (from s in db.SurveyResponses)
Join d in db.Demographics on s SurveyID equals d.SurveyID in grpjoin
from d in grpjoin.DefaultIfEmpty ()
Select new
{
Survey_ID = s.SurveyID,
Survey_Date = s.Survey.SurveyDate,
Question = s.Questions.QuestionTxt,
Response = s.Responses.ResponseTxt,
Zip_Code = d.ZipCode,
Department = d.CityDepartments.Department,
Ace_Score = s.Survey.AceScore,

}).List();

what happens after going through the Gridview / Excel code:

My current Excel spreadsheet

And what you want is an Excel spreadsheet that contains the questions as column headings along with SurveyID, Date, Zip, Department & Score with the answers to the questions as line data so that everything appears only once. Something like this Excel sheet I got from elsewhere:

example

For example, I tried several different groupings:

                var completedSurveys = (from s in db.SurveyResponses)
Join d in db.Demographics on s SurveyID equals d.SurveyID in grpjoin
from d in grpjoin.DefaultIfEmpty ()
Group new {s.Questions.QuestionTxt, s.Survey.SurveyDate} with new {s.SurveyID, s.Responses.ResponseTxt, d.ZipCode, d.CityDepartments.Partment, s.Survey.AceScore} in g
orderby g.Key.SurveyID ascending
Select new
{
Survey_ID = g.Key.SurveyID,
Survey_Date = g.Select (s => s.SurveyDate),
Answer = g.Key.ResponseTxt,
Zip = g.Key.ZipCode,
Department = g.Key.Department,
Ace_Score = g.Key.AceScore

}).List();

but I still do not quite get what I want. If I have to tell them that what I already have is as good as it gets, then that's fine, but I thought I'd at least get some advice. Any help would be appreciated.

Many Thanks