DataSet转Model

Posted 哈佛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataSet转Model相关的知识,希望对你有一定的参考价值。

  /// <summary>
    /// 返回List<Model>
    /// </summary>
    /// <typeparam name="T">Model类型</typeparam>
    /// <param name="entity">Model类型</param>
    /// <param name="ds"></param>
    /// <returns></returns>
    public static List<T> PutAll<T>(T entity, DataSet ds) where T : new()
    {
        try
        {
            List<T> lists = new List<T>();
            if (ds.Tables[0].Rows.Count > 0)
            {
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    lists.Add(Put(new T(), row));
                }
            }
            return lists;
        }
        catch (Exception)
        {
            //报错返回 null
            return null;
        }
    }


    /// <summary>
    /// 返回一条数据的Model
    /// </summary>
    /// <typeparam name="T">Model类型</typeparam>
    /// <param name="entity">Model类型</param>
    /// <param name="ds"></param>
    /// <returns></returns>
    public static T PutOne_Model<T>(T entity, DataSet ds) where T : new()
    {
        try
        {
            T m = new T();
            if (ds.Tables[0].Rows.Count > 0)
            {
                m = Put(new T(), ds.Tables[0].Rows[0]);
            }
            return m;
        }
        catch (Exception)
        {
            //报错返回 null
            return default(T);
            //throw;
        }
    }

    /// <summary>
    /// 处理数据行生成Model
    /// </summary>
    /// <typeparam name="T">Model类型</typeparam>
    /// <param name="entity">Model类型</param>
    /// <param name="row">数据行</param>
    /// <returns></returns>
    public static T Put<T>(T entity, DataRow row) where T : new()
    {
        //初始化 如果为null
        if (entity == null)
        {
            entity = new T();
        }
        //得到类型
        Type type = typeof(T);
        //取得属性集合
        PropertyInfo[] pi = type.GetProperties();
        foreach (PropertyInfo item in pi)
        {
            //判断数据中是否包含此列
            int index = row.Table.Columns.IndexOf(item.Name);
            if (index != -1)
            {
                //给属性赋值
                if (row[item.Name] != null && row[item.Name] != DBNull.Value)
                {
                    if (item.PropertyType == typeof(System.DateTime))
                    {
                        //如果对日期格式有特殊要求 可以在这里转换
                        //日期要为空值 定义Model DateTime? 即可
                        item.SetValue(entity, Convert.ToDateTime(row[item.Name].ToString()), null);
                    }
                    else
                    {
                        //按Model原数据类型转换
                        item.SetValue(entity, Convert.ChangeType(row[item.Name], item.PropertyType), null);
                    }
                }
            }
        }
        return entity;
    }

 

以上是关于DataSet转Model的主要内容,如果未能解决你的问题,请参考以下文章

.NET DataTable DataSet转json代码

Labelme 批量转 dataset 使用 labelme_json_to_dataset 命令 (图文详解)

Labelme 批量转 dataset 使用 labelme_json_to_dataset 命令 (简明图文教程)

使用 tf.data.Dataset 时,Model.fit() 方法的 shuffle 如何处理 Batches?

为啥这段代码会泄露? (简单的代码片段)

很实用的JQuery代码片段(转)