2 u011432167 u011432167 于 2016.02.01 15:39 提问

DataTable 类型转换为 List 类型

报错内容
图片说明

要转换的实体类 ID int类型,Name string 类型,这样报错的那两句要怎么写 ?

方法如下:
public static List ConvertToList(DataTable dt)
{

        // 定义集合
        List<T> ts = new List<T>();

        // 获得此模型的类型
        Type type = typeof(T);
        //定义一个临时变量
        string tempName = string.Empty;
        //遍历DataTable中所有的数据行
        foreach (DataRow dr in dt.Rows)
        {
            T t = new T();
            // 获得此模型的公共属性
            PropertyInfo[] propertys = t.GetType().GetProperties();
            //遍历该对象的所有属性
            foreach (PropertyInfo pi in propertys)
            {
                tempName = pi.Name;//将属性名称赋值给临时变量
                //检查DataTable是否包含此列(列名==对象的属性名)  
                if (dt.Columns.Contains(tempName))
                {
                    // 判断此属性是否有Setter
                    if (!pi.CanWrite) continue;//该属性不可写,直接跳出
                    //取值
                    object value = dr[tempName];
                   //如果非空,则赋给对象的属性
                    if (value != DBNull.Value)
                        pi.SetValue(t, value.ToString(), null);
                }
            }
            //对象添加到泛型集合中
            ts.Add(t);
        }

        return ts;

    }

1个回答

caozhy
caozhy   Ds   Rxr 2016.02.02 07:38
已采纳

pi.SetValue(t, int.Parse(value.ToString()), null);

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
DataTable转List方法及转换时遇到可空类型问题
DataTable在一些后台操作上不是很便利,所以可以将数据集转换成List在进行操作。 简单直接的方法就是循环datatable一一对应赋值给类,然后附加到List中。但是遇到属性过多的时候就麻烦不少。 查了下资料,发现可以使用反射和泛型来实现。 public static IList ConvertToList(DataTable dt) { va
将泛型集合类(List<T>)转换成DataTable,返回的DataTable所有列的数据类型为string型,且列顺序与字符串提供的字段顺序一致
主要用于数据前台展示,所以为了方便,都转成了string类型. /// /// 将泛型集合类转换成DataTable,返回的DataTable所有列的数据类型为string型,且列顺序与字符串提供的字段顺序一致 /// /// 集合项类型 /// 集合 ///
隐含类型var 转换为 DataTable
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data;using System.ComponentModel;namespace SmartERP.Until{    public static  class CovertClass    {     
将datatable转化为list
定义一个person类,声明属性id,name.address public class Person { private int id; public int Id { get { return id; } set { id = value; } }
C#中DataTable转换为string
DataTable dt = new DataTable(); DataSet ds = new DataSet(); ds.Tables.Add(dt); System.IO.StringWriter sw = new System.IO.StringWriter(); System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(
修改DataTable中的列的数据类型
修改DataTable中的列的数据类型 DataTable dt = Auctions.GetAuctionListWhere(string.Format(" Aid={0} ",aid)).Tables[0]; if (dt.Rows.Count>0) { //新表
【类型转换】DataTable与泛型
DataTable与泛型的转换方法
Datatable转换成List实体对象列表
/// /// 将Datatable转换为List集合 /// /// 类型参数 /// datatable表 /// public static List DataTableToList(DataTable dt) { var list = new Lis
如何将DataTable转换成List<T>呢?
昨日在工作中,遇到一个问题:需要将查询出来的DataTable数据源,转换成List的泛型集合(已知T类型)。第一反应,我想肯定要用到“泛型”(这不是废话吗?都说了要转换成List泛型集合了),而且还要用到“反射”相关的。呵呵。很快,我就做出了一个小实例,测试通过。下面我将代码贴出来,分享给大家。代码都有详细的注释,读者朋友可以很清晰的看懂我的思路。 首先,这是我写的一个通用转换类,完成此类操作
浅谈java泛型的类型转换问题
## 浅谈java泛型的类型转换问题 - **先引出问题如下:** 下面代码编译时<1>处不报错,<2>处报错,为何? ``` public class Test { public static <T> void printList(List<T> lists) { @SuppressWarnings("unchecked") List<Object> mLists = (List<Object>)