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:52]
wikiadmin [xxx Datenbaum erstellen]
start:visualstudio2019:programmieren:dotnet:component:programmierbeispiele [2022/12/19 16:32] (aktuell)
wikiadmin [From IList<T> to DataTable]
Zeile 80: Zeile 80:
  
  
 +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 ==== ==== 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>