Создать метод расширения для классов с одинаковой структурой и разным количеством столбцов - PullRequest
1 голос
/ 15 февраля 2012

У меня есть режим данных Entity Framework, в который я вставляю некоторую хранимую процедуру, и для каждого из этих SP я создаю сложный тип. Например, мой sp 1 имеет этот сложный тип:

sp1_result
{
      string c1;
      string c2;
      string c3;
      string c4;
}

и, например, sp 2 имеет этот сложный тип:

sp2_result
{
      string c1;
      string c2;
}

и т. Д. Я хочу преобразовать Список этих сложных результатов в DataTable, но у них разное количество столбцов, но их типы одинаковы. Как я могу написать Extension Method для этого?

спасибо

1 Ответ

2 голосов
/ 15 февраля 2012

, которые используют отражение и создают DataTable из коллекции List объекта ...

        /// <summary>
        /// Converts IList object to Datatable
        /// </summary>
        /// <typeparam name="T"> name of the class - List Type</typeparam>
        /// <param name="pList"> IList object</param>
        /// <returns>Datatable</returns>
        public static DataTable ConvertTo<T>(IList<T> pList)
        {
            DataTable table = CreateTable<T>();
            Type entityType = typeof(T);
            PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);

            foreach (T item in pList)
            {
                DataRow row = table.NewRow();

                foreach (PropertyDescriptor prop in properties)
                {
                    row[prop.Name] = prop.GetValue(item);
                }
                table.Rows.Add(row);
            }

            return table;
        }
...