You can use Linq to construct a convenient structure (e.g. List<String[]>) and then print out all the data wanted:
List<String[]> data = File
  .ReadLines(@"C:\test.txt")
 //.Skip(1) // <- uncomment this to skip caption if the csv has it
  .Select(line => line.Split(';').Take(3).ToArray()) // 3 items only
  .ToList();
// Table output (wanted one):
String report = String.Join(Environment.NewLine, 
  data.Select(items => String.Join("\t", items)));   
Console.WriteLine(report);
// Column after column output (actual one)
Console.WriteLine(String.Join(Environment.NewLine, data.Select(item => item[0])));
Console.WriteLine(String.Join(Environment.NewLine, data.Select(item => item[1])));
Console.WriteLine(String.Join(Environment.NewLine, data.Select(item => item[2])));
EDIT: if you want to choose the movie, buy the ticket etc. elaborate the structure:
  // Create a custom class where implement your logic 
  public class MovieRecord {
    private Date m_Start;
    private String m_Name;
    private int m_Seats;
    ... 
    public MovieRecord(DateTime start, String name, int seats) {
      ...
      m_Seats = seats;
      ...
    }
    ...
    public String ToString() {
      return String.Join("\t", m_Start, m_Name, m_Seats);
    }
    public void Buy() {...}
    ...
  }
And then convert to conventinal structure:
  List<MovieRecord> data = File
    .ReadLines(@"C:\test.txt")
    //.Skip(1) // <- uncomment this to skip caption if the csv has it
    .Select(line => {
       String items[] = line.Split(';'); 
       return new MovieRecord(
         DateTime.ParseExact(items[0], "PutActualFormat", CultureInfo.InvariantCulture), 
         items[1], 
         int.Parse(items[2]));
    }
    .ToList();
And the table output will be    
  Console.Write(String.Join(Envrironment.NewLine, data));