DataTable转换为Entity(反射&&泛型)

public static IEnumerable<T> Parse<T>(IEnumerable<DataRow> rows) where T : class, new()
{
    if (rows == null || Enumerable.FirstOrDefault<DataRow>(rows) == null)
        return (IEnumerable<T>) new T[0];
    PropertyInfo[] properties = typeof (T).GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty);
    List<T> list = new List<T>();
    foreach (DataRow row in rows)
    {
        T instance = Activator.CreateInstance<T>();
        DbHelper.Parse((object) instance, (IEnumerable<PropertyInfo>) properties, row);
        list.Add(instance);
    }
    return (IEnumerable<T>) list;
}

private static void Parse(object obj, IEnumerable<PropertyInfo> properties, DataRow row)
{
    foreach (PropertyInfo propertyInfo in properties)
    {
        if (DataRowExtension.HasValue(row, propertyInfo.Name))
        {
            try
            {
                propertyInfo.SetValue(obj, DbHelper.ConvertType(CultureInfo.CurrentCulture, row[propertyInfo.Name], propertyInfo.PropertyType), (object[]) null);
            }
        }
        catch{ }
    }
}
时间: 2024-10-21 19:18:51

DataTable转换为Entity(反射&&泛型)的相关文章

将DataTable转换为List&lt;T&gt;对象遇到问题:类型“System.Int64”的对象无法转换为类型“System.Int32”。

可以利用反射将DataTable转换为List<T>对象:原始链接http://www.jb51.net/article/67386.htm 但是该方法在DataTable里某个字段类型是Int32会有问题,报异常:类型"System.Int64"的对象无法转换为类型"System.Int32". 可在赋值的时候加一句: if(pi.GetMethod.ReturnParameter.ParameterType.Name == "Int32&q

将DataTable转换为List,将List转换为DataTable的实现类

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace Xmh.DBUnit { /// <summary> /// 将DataTable转换为List,将

DataTable转换为List&lt;Model&gt;的通用类

在开发中,把查询结果以DataTable返回很方便,但是在检索数据时又很麻烦,没有模型类型检索方便. 所以很多人都是按照以下方式做的: // 获得查询结果DataTable dt = DbHelper.ExecuteDataTable(...);// 把DataTable转换为IList<UserInfo>IList<UserInfo> users = ConvertToUserInfo(dt); 问题:如果此系统有几十上百个模型,那不是每个模型中都要写个把DataTable转换为

DataTable转换为List

/// <summary> /// 利用反射将DataTable转换为List<T>对象 /// </summary> /// <param name="dt">DataTable 对象</param> /// <returns>List<T>集合</returns> public static List<T> DataTableToList<T>(DataTable

DataTable 转换为List

protected void Button1_Click(object sender, EventArgs e)        {            //    string postfix = string.Empty;            //    string fileType = string.Empty;            //    postfix = ef[4, 1];            //    fileType = ef[4, 2];            /

Entity Framework 泛型使用

因为增删改查是我们常用到的方法,我们不可能每个数据模型都去完成增删改查,这样的办法太笨拙了.我们可以写个父类(包含增删改查),然后让所有的数据模型类继承该父类.那就要求我们的父类必须使用泛型来实现. 1 using System; 2 using System.Collections.Generic; 3 using System.Data.Entity.Infrastructure; 4 using System.Linq; 5 using System.Linq.Expressions; 6

DataTable转换为List&lt;T&gt;或者DataRow转换为T

这段时间开发ASP.NETMVC应用程序,从数据库获取数据之后,需要把记录转换为数据集在视图中显示.我们需要把DataTable转换为List<T>或者DataRow转换为T. 本篇中可以学习到相关的知识,数据库方面,创建表,添加数据,存储过程等.MVC方面,创建model,创建Entity,Utility写在一个目录中,控制器创建视图操作,以及行为操作. 先从数据库: SQL代码: CREATE TABLE [dbo].[Cookbook] ( [ID] INT IDENTITY(1,1)

Datatable转换为Json 然后把Json数据放入 js 文件中

C#中把Datatable转换为Json的5个代码实例 /// <summary> /// Datatable转换为Json /// </summary> /// <param name="table">Datatable对象</param> /// <returns>Json字符串</returns> public static string ToJson(DataTable dt) { StringBuilde

C#中把Datatable转换为Json的5个代码实例

一. /// <summary> /// Datatable转换为Json /// </summary> /// <param name="table">Datatable对象</param> /// <returns>Json字符串</returns> public static string ToJson(DataTable dt) { StringBuilder jsonString = new String