Consider this CodeProject article/project: LINQ TO CSV.
It will enable you to create a custom class that is shaped like your .csv file's columns. You'd then consume the CSV and bind to your DataGridView.
Dim cc As new CsvContext()
Dim inputFileDescription As New CsvFileDescription() With { _
.SeparatorChar = ","C, _
.FirstLineHasColumnNames = True _
}
Dim products As IEnumerable(Of Product) = _
cc.Read(Of Product)("products.csv", inputFileDescription)
' query from CSV, load into a new class of your own
Dim productsByName = From p In products
Select New CustomDisplayClass With _
{.Name = p.Name, .SomeDate = p.SomeDate, .Price = p.Price}, _
Order By p.Name
myDataGridView1.DataSource = products
myDataGridView1.DataBind()