I need to split a csv file by comma apart from where the columns is between quote marks. However, what I have here does not seem to be achieving what I need and comma's in columns are being split into separate array items.
    public List<string> GetData(string dataFile, int row)
    {
        try
        {
            var lines = File.ReadAllLines(dataFile).Select(a => a.Split(';'));
            var csv = from line in lines select (from piece in line select piece.Split(',')).ToList();
            var foo = csv.ToList();
            var result = foo[row][0].ToList();
            return result;
        }
        catch
        {
            return null;
        }
    }
    private const string QUOTE = "\"";
    private const string ESCAPED_QUOTE = "\"\"";
    private static char[] CHARACTERS_THAT_MUST_BE_QUOTED = { ',', '"', '\n' };
    public static string Escape(string s)
    {
        if (s.Contains(QUOTE))
            s = s.Replace(QUOTE, ESCAPED_QUOTE);
        if (s.IndexOfAny(CHARACTERS_THAT_MUST_BE_QUOTED) > -1)
            s = QUOTE + s + QUOTE;
        return s;
    }
I am not sure where I can use my escape function in this case.
Example:
Degree,Graduate,08-Dec-17,Level 1,"Advanced, Maths"
The string Advanced, Maths are being split into two different array items which I don't want
 
     
     
    