The problem is not your LINQ code at all. It's the fact that you're access the Cust.ExpiryDate property when your row contains a null value. Cust is a typed DataRow so each property is typed to the data it contains. Your ExpiryDate column contains Date values so the type of the ExpiryDate property is Date. A Property of type Date cannot return a value of type DBNull.
Typed DataRows always provide a method for columns that can contain nulls so you can test the value first, e.g.
vb Code:
If Cust.IsExpiryDateNull() Then
'The ExpiryDate column contains null so accessing the ExpiryDate property would throw an exception.
Else
'You can safely access the ExpiryDate property because you know it has a value.
End If
As far as I'm aware you cannot allow for this in LINQ using the typed properties of your DataRow. Of course, my knowledge of LINQ is far from complete, but if you use the row as though it's untyped then null values will not hurt you:
Code:
Dim myCustomers = From Cust In myDataset.Customers _
Select CustomerId = Cust.CustomerId, _
CustomerName = Cust.CustomerName, _
ExpiryDate = Cust("ExpiryDate")
DataGridView1.DataSource = myCustomers.ToList