首页 新闻 会员 周边

在C#中如何反射出DataTable中行的属性和属性对应的值

0
悬赏园豆:10 [已关闭问题]

如何反射出dt.rows[i]中的属性和属性分别对应的值,貌似用GetType().GetProperties() 可是没用弄出来,求高手帮忙解决一下!

willsoft_jin的主页 willsoft_jin | 初学一级 | 园豆:190
提问于:2010-05-27 15:56
< >
分享
其他回答(2)
0

DataTable dt = new DataTable();
DataRow dr = dt.Rows[0];
PropertyInfo[] properties= dr.GetType().GetProperties();
properties[0].GetValue(dr, null);

 

这个不管用吗?

Launcher | 园豆:45045 (高人七级) | 2010-05-27 17:22
貌似不管用,我是这么写的,麻烦你有时间帮我看看哪的问题。 DataTable dt = new DataTable(); DataColumn col1 = new DataColumn("Id", typeof(Int32)); DataColumn col2 = new DataColumn("Name", typeof(String)); dt.Columns.Add(col1); dt.Columns.Add(col2); DataRow row1 = dt.NewRow(); row1[col1]= 1; row1[col2] = "Hello"; dt.Rows.Add(row1); DataRow dr = dt.Rows[0]; PropertyInfo[] properties = dr.GetType().GetProperties(); foreach (PropertyInfo info in properties) { object obj1 = info.Name; object obj2 = info.GetValue(dr, null); }
支持(0) 反对(0) willsoft_jin | 园豆:190 (初学一级) | 2010-05-28 09:11
有用啊!只是有些属性是indexed的,GetValue的第二个参数不能传null,而必须传object[].
支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2010-05-28 13:03
0

楼主应该是想要

dt.rows[i]["ID"]这样的数据吗?

 

如果是的话,可以同时遍历列和行就可以取得数据了.

 

System.Data.DataTable dt = new System.Data.DataTable();
foreach (System.Data.DataColumn col in dt.Columns)
{
    foreach (System.Data.DataRow row in dt.Rows)
    {
        Response.Write(row[col.ColumnName]);
    }
}

System.Data.DataTable dt = new System.Data.DataTable();

foreach (System.Data.DataColumn col in dt.Columns){   

 foreach (System.Data.DataRow row in dt.Rows)    {        Response.Write(row[col.ColumnName]);    

}

}

I,Robot | 园豆:9783 (大侠五级) | 2010-05-27 17:53
0

        public static DataTable ToDataTable(IList<T> list)
        {
            DataTable result = new DataTable();
            if (list.Count > 0)
            {
                System.Reflection.PropertyInfo[] propertys = list[0].GetType().GetProperties();
                foreach (System.Reflection.PropertyInfo pi in propertys)
                {
                    result.Columns.Add(pi.Name, pi.PropertyType);
                }

                for (int i = 0; i < list.Count; i++)
                {
                    ArrayList tempList = new ArrayList();
                    foreach (System.Reflection.PropertyInfo pi in propertys)
                    {
                        object obj = pi.GetValue(list[i], null);
                        tempList.Add(obj);
                    }
                    object[] array = tempList.ToArray();
                    result.LoadDataRow(array, true);
                }
            }
            return result;
        }

Astar | 园豆:40805 (高人七级) | 2010-05-28 08:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册