Metainformationen zur Seite
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
start:visualstudio2019:programmieren:dotnet:component:programmierbeispiele [2022/12/19 15:36]
wikiadmin [xxx Datenbaum erstellen]
start:visualstudio2019:programmieren:dotnet:component:programmierbeispiele [2022/12/19 16:32] (aktuell)
wikiadmin [From IList<T> to DataTable]
Zeile 75: Zeile 75:
  
  
 +
 +----
 ====== DataTable and DataSet ====== ====== DataTable and DataSet ======
 +
 +
 +Das folgende Beispiel soll ein List Objekt in eine Datentabelle umwandeln. Ein generische Lösungsansatz ermöglicht es alle Eigenschaften und nur deren Eigenschaften, in eine Datentabelle umzuwandeln. Da die Eingenschaften auch NULL sein können muss dies bei der Konvertierung berücksichtigt werden.
 +
 +The following example is to convert a List object into a data table. A generic approach allows to convert all properties and only their properties into a data table. Since the properties can also be NULL, this must be taken into account during the conversion.
 +
 +[[https://social.msdn.microsoft.com/Forums/vstudio/en-US/6ffcb247-77fb-40b4-bcba-08ba377ab9db/converting-a-list-to-datatable?forum=csharpgeneral|Example A]]
 +[[https://stackoverflow.com/questions/701223/net-convert-generic-collection-to-datatable|Example B]]
 +==== From IList<T> to DataTable ====
 +
 +<code c# [enable_line_numbers="true",highlight_lines_extra="12"]>
 +public DataTable ConvertToDataTable<T>(IList<T> data)
 +    {
 +        PropertyDescriptorCollection properties =
 +           TypeDescriptor.GetProperties(typeof(T));
 +        DataTable table = new DataTable();
 +        foreach (PropertyDescriptor prop in properties)
 +            table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
 +        foreach (T item in data)
 +        {
 +            DataRow row = table.NewRow();
 +            foreach (PropertyDescriptor prop in properties)
 +                row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
 +            table.Rows.Add(row);
 +        }
 +        return table;
 +
 +    }
 +</code>