Qual è il sistema per caricare un DataGridView con i dati provenienti da una collezione, o da un arraylist?

Esempio: ho una collezione che contiene strutture del tipo:

codice:
Public Structure Cliente

    Public Nome As String
    Public Cognome As String
    Public EMail As String

End Structure
Qual'è il metodo più corretto per visualizzare i dati in una DataGridView? Il sistema che uso (ciclo for each per la collezione e quindi riempimento del datagridview) mi sembra troppo "grezzo", c'è un sistema per creare ad esempio un dataset dalla collezione e quindi riempire il datagridview?