It is possible to use a Regex:
List<List<String>> rows = new List<List<String>>();
MatchCollection matches = Regex.Matches(input, @"^(?:(?:\s*""(?<value>[^""]*)""\s*|(?<value>[^,]*)),)*?(?:\s*""(?>value>[^""]*)""\s*|(?<value>[^,]*))$", RegexOptions.Multiline);
foreach(Match row in matches)
{
List<String> values = new List<String>();
foreach(Capture value in row.Groups["value"].Captures)
{
values.Add(value.Value);
}
rows.Add(values);
}
I do not suggest that it is the best solution, but for small files (a couple of rows) it probably isn't too bad.