0

I have a method for exporting a WebGrid to a .csv file but not all Surveys contain a CompanyName so I get the error 'Object reference not set to an instance of an object.'

How would I go about correcting this?

    public void DownloadCSV()
    {

        StringWriter sw = new StringWriter();

        sw.WriteLine("\"Project Number\",\"Location\"");

        Response.ClearContent();
        Response.AddHeader("content-disposition", "attachment; filename=Survey" + DateTime.Today.ToShortDateString() + ".csv");
        Response.ContentType = "text/csv";

        var surveys = from s in SurveyDB.Surveys select s;

        foreach (var line in surveys)
        {
                sw.WriteLine(string.Format("\"{0}\",\"{1}\",\"{2}\"",
                                           line.projNo,
                                           line.locationName,
                                           line.Company.CompanyName
                                           ));
        }

        Response.Write(sw.ToString());

        Response.End();

    }
Dxnstar
  • 11
  • 5

1 Answers1

0

Try this:

 sw.WriteLine(string.Format("\"{0}\",\"{1}\",\"{2}\"",
    line.projNo,
    line.locationName,
    (line.Company == null || line.Company.CompanyName == null) ? "" : line.Company.CompanyName
 ));

If you are using Entity Framework I suggest you update this line from:

var surveys = from s in SurveyDB.Surveys select s;

To:

var surveys = from s in SurveyDB.Surveys.Include("Companies") select s;
SmartDev
  • 2,802
  • 1
  • 17
  • 22