title: Dynamically create HTML table in C#
body: <p>Is there more efficient way to build HTML table than the one I'm trying on right now?</p>
  
  <p>I'm getting an object and it has some list of entities in it. So I need to pass through each of them and build first a cell and then add it to an row and finally adding it in table.</p>
  
  <p>The thing I'm trying on is totally messy, kind of works, but it has too much of redundant code.</p>
  
  <pre><code>public static string CreateNotificationMailMessage(NotificationMailMessage mailMessageObject)
  {
      var table = new HtmlTable();
      var mailMessage = new StringBuilder();
      string html;
  
      if (mailMessageObject.InvalidCompanies.Any())
      {
          HtmlTableRow row;
          HtmlTableCell cell;
  
          foreach (var invalidCompany in mailMessageObject.InvalidCompanies)
          {
              row = new HtmlTableRow();
              cell = new HtmlTableCell();
              cell.InnerText = invalidCompany.BusinessName;
              row.Cells.Add(cell);
              cell.InnerText = invalidCompany.SwiftBIC;
              row.Cells.Add(cell);
              cell.InnerText = invalidCompany.IBAN;
              row.Cells.Add(cell);
              table.Rows.Add(row);
          }
      }
      using (var sw = new StringWriter())
      {
          table.RenderControl(new HtmlTextWriter(sw));
          html = sw.ToString();
      }
  
      mailMessage.AppendFormat(html);
      return mailMessage.ToString();
  }
  </code></pre>
  
  <p>At the end I want to return text version of created HTML table.
  The problem is that I have much more properties than those 3 (BusinessName, SwiftBIC and IBAN) and plus I have one more list of objects inside of mailMessageObject, so the code would be terrible.</p>
  
  <p>Anybody has an idea how to solve this in simpler and cleaner way?</p>