¿Cómo transformo una Lista <T> en un DataSet?

Dado una lista de objetos, necesito transformarlo en un conjunto de datos donde cada elemento de la lista esté representado por una fila y cada propiedad sea una columna en la fila. Este conjunto de datos se pasará a una Aspose.Cells para crear un documento de Excel como informe.

Di que tengo lo siguiente:

public class Record
{
   public int ID { get; set; }
   public bool Status { get; set; }
   public string Message { get; set; }
}

Dado una lista de registros, ¿cómo puedo transformarlo en un DataSet de la siguiente manera:

ID Status Message
1  true   "message" 
2  false  "message2" 
3  true   "message3" 
...

Por el momento, lo único que puedo pensar es lo siguiente:

DataSet ds = new DataSet
ds.Tables.Add();
ds.Tables[0].Add("ID", typeof(int));    
ds.Tables[0].Add("Status", typeof(bool));
ds.Tables[0].Add("Message", typeof(string));

foreach(Record record in records)
{
    ds.Tables[0].Rows.Add(record.ID, record.Status, record.Message);
}

Pero de esta manera me deja pensando que debe haber una mejor manera ya que, al menos, si se agregan nuevas propiedades a Record, no aparecerán en el DataSet ... pero al mismo tiempo me permite controlar el pedido cada propiedad se agrega a la fila.

Alguien sabe de una mejor manera de hacer esto?

Respuestas a la pregunta(5)

Su respuesta a la pregunta