List转换DataTable

/// <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;
    }

  

时间: 2024-10-13 00:39:58

List转换DataTable的相关文章

服务器不装Excel读取Excel并转换DataTable

原来是用OleDb.4.0组件读取Excel,但是放到服务器后 傻了,服务器没装Excel ,而且领导说不可以装 没办法,只好自己重新找下代码 在CodeProject找到一个开源的dll,一阵欢喜啊,虽然是winform项目,但是主要是用他的类库所以提取一下后 自己研究后重新封装了一个类,运行 耶! 完美支持 需要Dome的同学下载后去研究下吧 地址:http://download.csdn.net/detail/jine515073/7266371 本人用 Excel 97-2003 工作表

dataGrid转换dataTable

#region dataGrid转换dataTable   /// <summary>   /// dataGrid转换dataTable   /// </summary>   /// <param name="dg">dataGrid</param>   /// <returns>返回dataTable</returns>   public DataTable DT(DataGrid dg)   {    try

DataRow[]转换DataTable

public DataTable ToDataTable(DataRow[] rows)    {        if (rows == null || rows.Length == 0) return null;        DataTable tmp = rows[0].Table.Clone();  // 复制DataRow的表结构        foreach (DataRow row in rows)            tmp.Rows.Add(row);  // 将DataRo

DataRow数组转换DataTable

public DataTable ToDataTable(DataRow[] rows) { if (rows == null || rows.Length == 0) return null; DataTable tmp = rows[0].Table.Clone(); // 复制DataRow的表结构 foreach (DataRow row in rows) tmp.Rows.Add(row.ItemArray); // 将DataRow添加到DataTable中 return tmp;

DataRow[] /数组转换datatable!

/// <summary> /// /// </summary> /// <param name="dt"></param> /// <param name="strWhere">筛选的条件</param> /// <returns></returns> public DataTable SreeenDataTable(DataTable dt,string strWhe

List&lt;T&gt; 转换 DataTable

public class List2DataTable     { public static string GetClassName(Type type) {             if (type == null) throw new ArgumentException("参数type不能为空"); if (type.HasAttribute<AliasAttribute>()) return type.GetAttribute<AliasAttribute&g

读CSV转换datatable

using System.Data; using System.IO; /// <summary> /// Stream读取.csv文件 /// </summary> /// <param name="filePath">文件路径</param> /// <returns></returns> public static DataTable OpenCSV(string filePath) {     DataTa

SqL读取XML、解析XML、SqL将XML转换DataTable、SqL将XML转换表

DECLARE @ItemMessage XML DECLARE @ItemTable TABLE(ItemNumber INT PRIMARY KEY,ItemDescription NVARCHAR(300)) SET @ItemMessage=N' <ReceivablesInfos> <ReceivablesList> <LIFNR>0000xxxxxx</LIFNR> <NAME1>上海有限公司</NAME1> <BU

关于datatable转换datatime类型的问题

今天转换datatable 属性值的时候出错: DataTable dt_1 = new DataTable();dt_1 = new BLL.auction().GetList_pmh(top, _where, "").Tables[0]; DateTime d = DateTime.Parse(dt_1["preview_time1"].ToString()); 更正后如下: DateTime d = DateTime.Parse(dt_1.Rows[0][&q