首页 新闻 会员 周边

如何动态的将list<model>中的数值插入到datatable中

0
悬赏园豆:10 [已解决问题] 解决于 2013-04-22 15:13
提问如题 ,list是动态的,如何可以以最优方式将list<model> 动态的加入到datatable中?谢谢
梁子se7en的主页 梁子se7en | 初学一级 | 园豆:177
提问于:2013-04-02 11:03
< >
分享
最佳答案
0
收获园豆:3
chenping2008 | 大侠五级 |园豆:9836 | 2013-04-02 13:52
其他回答(5)
0

为什么用DataTable ?

收获园豆:1
zhibudao | 园豆:525 (小虾三级) | 2013-04-02 11:25

现在的问题不是为什么用datatable ,而且如何实现这种操作方式。

支持(0) 反对(0) 梁子se7en | 园豆:177 (初学一级) | 2013-04-02 11:35

@梁子se7en: 

View Code
DataTable dt =new DataTable(); 
DataColumn ID = new DataColumn("ID");
ID.DataType = System.Type.GetType("System.String");
dt.Columns.Add(ID);

foreach(Model m in list<Model>)
{
    DataRow dr=new DataRow(m);
    dt.Rows().Add(dr);       
}

 以上代码 无测试 只给你提供思路

支持(1) 反对(0) zhibudao | 园豆:525 (小虾三级) | 2013-04-02 11:46

@zhibudao: 谢谢 。我明白你代码的意思 。可能是我没有说清楚 ,我的列都是未知动态的 ,所以我想要实现的是动态的根据list去添加到datatable中 。

支持(0) 反对(0) 梁子se7en | 园豆:177 (初学一级) | 2013-04-02 11:57

@梁子se7en: 列名随便起 也可以动态的

支持(0) 反对(0) zhibudao | 园豆:525 (小虾三级) | 2013-04-02 11:59
0

反射获取model的property,然后用于建column。再遍历list,将数据添加到DataTable

收获园豆:1
sinhbv | 园豆:2579 (老鸟四级) | 2013-04-02 12:29
0

反射?这种需求感觉就是想实现“程序完全自动化”这类的东西,没多大用处,还是自己多设计、重构程序比较好。

收获园豆:1
顾晓北 | 园豆:10844 (专家六级) | 2013-04-02 13:40
0

上代码

private DataTable ListConvertDataTableCommon<T>(List<T> list)
        {
            DataTable dt = new DataTable();
            PropertyInfo[] propertyInfos = typeof(T).GetProperties();
            foreach (var item in propertyInfos)
            {
                dt.Columns.Add(item.Name);
            }
            try
            {
                T model;
                if (list!=null || list.Count>0)
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        model = list[i];
                        DataRow dr = dt.NewRow();
                        foreach (var item in propertyInfos)
                        {
                            dr[item.Name] = item.GetValue(model,null);
                        }
                        dt.Rows.Add(dr);
                    }
                }
            }
            catch (Exception e)
            {
                throw new Exception("意外错误");
            }
            return dt;
        }
收获园豆:1
淘@淘 | 园豆:602 (小虾三级) | 2013-04-02 14:33
0

其实楼主意思就是 把 list<model> 转换成DataTABLE……

收获园豆:1
八戒的师傅 | 园豆:1472 (小虾三级) | 2013-04-02 15:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册