Как я преобразовываю Список <T> в DataSet?

просто удалите пакет из консоли диспетчера пакетов из команды ниже

PM> Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

PM> Uninstall-package Microsoft.Net.Compilers

, а затем снова установите его из диспетчера nuget

15
задан mezoid 7 February 2009 в 04:48
поделиться

3 ответа

Можно сделать это посредством отражения и дженериков, осмотрев свойства базового типа.

Рассматривают этот дополнительный метод, который я использую:

    public static DataTable ToDataTable<T>(this IEnumerable<T> collection)
    {
        DataTable dt = new DataTable("DataTable");
        Type t = typeof(T);
        PropertyInfo[] pia = t.GetProperties();

        //Inspect the properties and create the columns in the DataTable
        foreach (PropertyInfo pi in pia)
        {
            Type ColumnType = pi.PropertyType;
            if ((ColumnType.IsGenericType))
            {
                ColumnType = ColumnType.GetGenericArguments()[0];
            }
            dt.Columns.Add(pi.Name, ColumnType);
        }

        //Populate the data table
        foreach (T item in collection)
        {
            DataRow dr = dt.NewRow();
            dr.BeginEdit();
            foreach (PropertyInfo pi in pia)
            {
                if (pi.GetValue(item, null) != null)
                {
                    dr[pi.Name] = pi.GetValue(item, null);
                }
            }
            dr.EndEdit();
            dt.Rows.Add(dr);
        }
        return dt;
    }
30
ответ дан 1 December 2019 в 01:53
поделиться

Кроме дополнительного использования Reflection для определения свойств класса Record для заботы о добавлении новых свойств это - в значительной степени это.

1
ответ дан 1 December 2019 в 01:53
поделиться

I've written a small library myself to accomplish this task. It uses reflection only for the first time an object type is to be translated to a datatable. It emits a method that will do all the work translating an object type.

Its blazing fast. You can find it here: ModelShredder on GoogleCode

0
ответ дан 1 December 2019 в 01:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: