Have you tried regular expressions?
It´s very useful to know how they work (painful experience).
var table = new List<string[]>();
using (var r = new StreamReader("filePathOrStreamHere"))
{
while (!r.EndOfStream)
{
string line = r.ReadLine();
table.Add(Regex.Split(line, @"\s|[;]|[,]"));
}
r.Close();
}
When you are using the data later you can convert it into the datatype based on index?