title: Ignore the comma inside a row from a csv
body: <p>So here is my issue.</p>
  
  <p>I am reading a CSV into a datagridview. the first row of the csv is the column headers and the  of the file becomes the row. I am reading the file and using as the datasource of the datagridview. However some lines in the CSV have something similar to</p>
  
  <blockquote>
    <p>name,test,1,2,3,<strong>test,2</strong>,3,2,1,test,name</p>
  </blockquote>
  
  <p>Where it is bolded above when I use <code>.Split()</code> it considers it as a new cell in the row however the number of columns is 10 instead of 11 and I get the following error:</p>
  
  <blockquote>
    <p>Input array is longer than the number of columns in this table</p>
  </blockquote>
  
  <p>How can I get around this.</p>
  
  <p>Below is my C# Code.</p>
  
  <pre><code>OpenFileDialog openFile = new OpenFileDialog();
          openFile.InitialDirectory = "c:\\";
          openFile.Filter = "txt files (*.txt)|*.txt| CSV Files (*.csv) | *.csv| All Files (*.*) | *.*";
          openFile.FilterIndex = 2;
          openFile.RestoreDirectory = true;
          try {
              if (openFile.ShowDialog() == DialogResult.OK)
              {
                  string file = openFile.FileName;
                  StreamReader sr = new StreamReader(file);
  
                  /* gets all the lines of the csv */
                  string[] str = File.ReadAllLines(file);
  
                  /* creates a data table*/
                  DataTable dt = new DataTable();
  
                  /* gets the column headers from the first line*/
                  string[] temp = str[0].Split(',');
  
                  /* creates columns of the gridview base on what is stored in the temp array */
                  foreach (string t in temp)
                  {
                      dt.Columns.Add(t, typeof(string));
                  }
  
                  /* retrieves the rows after the first row and adds it to the datatable */
                  for (int i = 1; i &lt; str.Length; i++)
                  {
                      string[] t = str[i].Split(',');
                      dt.Rows.Add(t);
                  }
  
                  /* assigns the data grid view a data source based on what is stored in dt  */
                  dataGridView1.DataSource = dt;
              }
          }
          catch (Exception ex) 
          {
                  MessageBox.Show("Error: The CSV you selected could not be loaded" + ex.Message);
          }
  </code></pre>