Dada una lista de objetos, necesito transformarla en un conjunto de datos donde cada elemento de la lista se representa mediante una fila y cada propiedad es una columna en la fila. Este DataSet se pasará a una función Aspose.Cells para crear un documento de Excel como informe.¿Cómo transformo una Lista <T> en un DataSet?
Decir que tengo el 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 conjunto de datos de la siguiente manera:
ID Status Message
1 true "message"
2 false "message2"
3 true "message3"
...
Por el momento lo único que se me ocurre es el 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 esto me hace pensar que debe haber una mejor manera ya que en el al menos si se agregan nuevas propiedades a Record, entonces no aparecerán en el DataSet ... pero al mismo tiempo me permite controlar el orden en que cada propiedad se agrega a la fila.
¿Alguien sabe de una mejor manera de hacer esto?
Bueno, la comunidad ha hablado, así que le votaré la respuesta, aunque no podré usarla para mis propósitos, ya que quiero controlar el orden de los parámetros. Pero definitivamente voy a tener esta solución en mente ... – mezoid
Oye, acabo de probar su extensión y he descubierto que si desea controlar el orden en que aparecen las columnas en la tabla de datos, debe declararlas en el orden en que los quiere en el objeto de tipo T que pasa a la extensión. ¡Eso es genial! – mezoid