update tutorial net mvc framework first español code asp c# asp.net-mvc entity-framework linq

c# - tutorial - Modelo de exportación a DataTable



mvc entity framework relationships (3)

Quiero convertir mis datos de modelo a DataSet o DataTable (para exportar en formato excel)

db.EMPs.ToList()

db es DataContext , EMPs es dataclass .

Cómo exportar esta lista a DataTable , puedo exportar filas a Excel pero cómo acceder al nombre de la columna desde el encabezado (el nombre de columna no se debe agregar manualmente en DataTable )


El uso de MoreLinq es la mejor forma de convertir una clase a DataTable como ya respondió S.Akbari. A continuación, se muestra otra forma de hacerlo mediante el uso de System.Reflection

List<EMP> list= db.EMPs.ToList(); DataTable dt = new DataTable(); PropertyInfo[] Props = typeof(EMP).GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo prop in Props) { //Setting column names as Property names dt.Columns.Add(prop.Name); } foreach (EMP e in list) { var values = new object[Props.Length]; for (int i = 0; i < Props.Length; i++) { //inserting property values to datatable rows values[i] = Props[i].GetValue(e, null); } dt.Rows.Add(values); }


Para crear rápidamente un archivo que se pueda leer en Excel, puede asignar los contenidos a una lista de valores separados por comas usando LINQ y luego guardar la matriz en una secuencia de archivos.

var records = db.EMP .ToList() .Select(record => $"/"{record.stringField}/",{record.numberField}") .ToArray(); File.WriteAllLines("file.csv", records);


Puede usar el método de extensión ToDataTable pero primero debe instalar MoreLinq . Para instalar MoreLINQ , ejecute el siguiente comando en la consola del Administrador de paquetes:

PM> Install-Package morelinq

A continuación, agregue la siguiente línea a sus directivas de using :

using MoreLinq;

Y finalmente puedes usar el método de extensión ToDataTable :

DataTable s = db.EMPs.ToDataTable();