您的位置:首页 > 其它

datatable转换为list

2016-01-19 16:11 232 查看
1.datatable转换为list

 

C# 代码   复制

        

        public List<T> GetList<T>(DataTable table)

        {

            List<T> list = new List<T>();

            T t = default(T);

            PropertyInfo[] propertypes = null;

            string tempName = string.Empty;

            foreach (DataRow row in table.Rows)

            {

                t = Activator.CreateInstance<T>();

                propertypes = t.GetType().GetProperties();

                foreach (PropertyInfo pro in propertypes)

                {

                    tempName = pro.Name;

                    if (table.Columns.Contains(tempName))

                    {

                        object value = row[tempName];

                        if (!value.ToString().Equals(""))

                        {

                            pro.SetValue(t, value, null);

                        }

                    }

                }

                list.Add(t);

            }

            return list.Count == 0 ? null : list;

        }

 

 

2.list转换为datatable

 

 

C# 代码   复制

        public DataSet ConvertToDataSet<T>(IList<T> list)

        {

            if (list == null || list.Count <= 0)

            {

                return null;

            }

 

            DataSet ds = new DataSet();

            DataTable dt = new DataTable(typeof(T).Name);

            DataColumn column;

            DataRow row;

 

            System.Reflection.PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);

 

            foreach (T t in list)

            {

                if (t == null)

                {

                    continue;

                }

 

                row = dt.NewRow();

 

                for (int i = 0, j = myPropertyInfo.Length; i < j; i++)

                {

                    System.Reflection.PropertyInfo pi = myPropertyInfo[i];

 

                    string name = pi.Name;

 

                    if (dt.Columns[name] == null)

                    {

                        column = new DataColumn(name, pi.PropertyType);

                        dt.Columns.Add(column);

                    }

 

                    row[name] = pi.GetValue(t, null);

                }

 

                dt.Rows.Add(row);

            }

 

            ds.Tables.Add(dt);

 

            return ds;

        }

-----------------------------------------------------------------------------

list<Dictionary<string, string>> list = new  list<Dictionary<string, string>>();

foreach(datarow dr in datatable.rows)

{

    Dictionary<string, string> dct = new Dictionary<string, string>()

    foreach(datacolumn dc in datatable.datacolumns)

    {

          dct.add(dc.columnname,dr[dc.columnname].tostring());

    }

    list .add(dct )

}

-----------------------

dt.Rows.Cast<DataRow>().ToDictionary(x => x[0].ToString(), x => x[1].ToString());

------------------------

dt.Rows.Cast<DataRow>().Select(x => 

    {

        var dict = new Dictionary<string, string>();

        dict.Add("姓名", x[0].ToString());

        dict.Add("学号", x[1].ToString());

        return dict;

    }).ToList();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: