잠토의 잠망경

[c#] from DataTable To List<T> 본문

공부/C sharp

[c#] from DataTable To List<T>

잠수함토끼 2020. 5. 4. 21:08

DataTable에서 List<T> 로 변환하기

github

using System;
using System.Collections.Generic;
using System.Data;
using System.Reflection;

namespace WCF_Util
{
    public class MyConverter
    {
        public static List<T> ConvertDataTable<T>(DataTable dt)
        {
            List<T> data = new List<T>();
            foreach (DataRow row in dt.Rows)
            {
                T item = GetItem<T>(row);
                data.Add(item);
            }
            return data;
        }

        public static T GetItem<T>(DataRow dr)
        {
            Type temp = typeof(T);
            T obj = Activator.CreateInstance<T>();

            foreach (DataColumn column in dr.Table.Columns)
            {
                foreach (PropertyInfo pro in temp.GetProperties())
                {
                    if (pro.Name == column.ColumnName)
                        //pro.SetValue(obj, dr[column.ColumnName], null);
                        pro.SetValue(obj, Convert.ChangeType(dr[column.ColumnName], pro.PropertyType), null);
                    else
                        continue;
                }
            }
            return obj;
        }

    }
}

 

사용법

github

void GetDtCallBack(object sender, ServiceReference1.GetDT_OracleCompletedEventArgs e)
{
            List<SHOPS> temp = MyConverter.ConvertDataTable<SHOPS>(e.Result);

            MessageBox.Show(e.Result.Rows.Count.ToString()+" 건");
}
Comments