c# tutorial Modell in DataTable exportieren




mvc add entity framework (3)

Um schnell eine Datei zu erstellen, die in Excel gelesen werden kann, können Sie den Inhalt mithilfe von LINQ einer durch Kommas getrennten Werteliste zuordnen und dann das Array in einem Dateistrom speichern.

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

Ich möchte meine Modelldaten in DataSet oder DataTable konvertieren (um im Excel-Format zu exportieren)

db.EMPs.ToList()

db ist EMPs , EMPs ist dataclass .

Wie man diese Liste nach DataTable exportiert, kann ich Zeilen in Excel exportieren, aber wie man auf den Spaltennamen aus dem Header zugreift (der Spaltenname sollte nicht manuell in DataTable hinzugefügt werden)


Sie können die ToDataTable Erweiterungsmethode verwenden, müssen jedoch zuerst MoreLinq installieren. Führen Sie den folgenden Befehl in der Package Manager-Konsole aus, um MoreLINQ zu installieren:

PM> Installations-Paket morelinq

Fügen Sie dann Ihren using Anweisungen die folgende Zeile hinzu:

using MoreLinq;

Und schließlich können Sie die ToDataTable Erweiterungsmethode verwenden:

DataTable s = db.EMPs.ToDataTable();

Die Verwendung von MoreLinq ist der beste Weg, um eine Klasse in DataTable zu konvertieren, wie bereits von S.Akbari beantwortet. Unten ist eine andere Methode, die ich gefunden habe, um dies mit 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);
}




linq