首页 新闻 搜索 专区 学院

list和datable转换发生错误

0
[待解决问题]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Collections;
using System.Reflection;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<object> listS = new List<object>();
listS.Add("aa");
listS.Add("bb");
listS.Add("cc");
listS.Add("dd");
GridView1.DataSource = ToDataTable(listS);
GridView1.DataBind();
}
public static DataTable ToDataTable(IList list)
{
DataTable result = new DataTable();
if (list.Count > 0)
{
PropertyInfo[] propertys = list[0].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
result.Columns.Add(pi.Name, pi.PropertyType);
}
for (int i = 0; i < list.Count; i++)
{
ArrayList tem = new ArrayList();
foreach (PropertyInfo pi in propertys)
{

object obj = pi.GetValue( list[i], null);
tem.Add(obj);
}
object[] array = tem.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}
}

谁知道怎么搞定

码农一号wwg的主页 码农一号wwg | 菜鸟二级 | 园豆:205
提问于:2015-04-09 15:21
< >
分享
所有回答(2)
0

把错误信息贴出来啊。

Firen | 园豆:5483 (大侠五级) | 2015-04-09 16:51

那张图片就是啊

支持(0) 反对(0) 码农一号wwg | 园豆:205 (菜鸟二级) | 2015-04-09 16:54

@码农一号wwg: 看不清…

支持(0) 反对(0) Firen | 园豆:5483 (大侠五级) | 2015-04-09 16:55

@码农一号wwg: 我已经解决了,,谢谢了啊

支持(0) 反对(0) 码农一号wwg | 园豆:205 (菜鸟二级) | 2015-04-09 17:09
0

/// <summary>
    /// 将泛类型集合List类转换成DataTable
    /// </summary>
    /// <param name="list">泛类型集合</param>
    /// <returns></returns>
    public static DataTable ListToDataTable<T>(List<T> entitys)
    {
        //检查实体集合不能为空
        if (entitys == null || entitys.Count < 1)
        {
            throw new Exception("需转换的集合为空");
        }
        //取出第一个实体的所有Propertie
        Type entityType = entitys[0].GetType();
        PropertyInfo[] entityProperties = entityType.GetProperties();

        //生成DataTable的structure
        //生产代码中,应将生成的DataTable结构Cache起来,此处略
        DataTable dt = new DataTable();
        for (int i = 0; i < entityProperties.Length; i++)
        {
            //dt.Columns.Add(entityProperties[i].Name, entityProperties[i].PropertyType);
            dt.Columns.Add(entityProperties[i].Name);
        }
        //将所有entity添加到DataTable中
        foreach (object entity in entitys)
        {
            //检查所有的的实体都为同一类型
            if (entity.GetType() != entityType)
            {
                throw new Exception("要转换的集合元素类型不一致");
            }
            object[] entityValues = new object[entityProperties.Length];
            for (int i = 0; i < entityProperties.Length; i++)
            {
                entityValues[i] = entityProperties[i].GetValue(entity, null);
            }
            dt.Rows.Add(entityValues);
        }
        return dt;
    }

茂茂 | 园豆:2860 (老鸟四级) | 2015-04-09 17:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册