<返回更多

C#将DataTable数据源转换成实体类

2021-11-04    重庆本地人
加入收藏

在进行C#接口开发时经常需要将数据集转换成json返回,下面介绍一种将DataTable数据转换成实体类,然后再转换成json的方法。

一、创建全病案类

/// <summary>
    /// 全病案
    /// </summary> 
class Qba
    {
        /// <summary>
        /// id
        /// </summary>
        public int ID { get; set; }
        /// <summary>
        /// 病案名称
        /// </summary>
        public string BAMC { get; set; }
        /// <summary>
        /// 名称
        /// </summary>
        public string WBMC { get; set; }
        /// <summary>
        /// 内容
        /// </summary>
        public string WBNR { get; set; }
    }

二、工具类

   /// <summary>
    /// 将DataTable数据源转换成实体类
    /// </summary>
    /// <typeparam name="T">实体</typeparam>
    public static class ToModel<T> where T : new()
    {
        /// <summary>
        /// 将DataTable数据源转换成实体类
        /// </summary>
        public static List<T> ConvertToModel(DataTable dt)
        {
            List<T> ts = new List<T>();// 定义集合
            foreach (DataRow dr in dt.Rows)
            {
                T t = new T();
                PropertyInfo[] propertys = t.GetType().GetProperties();// 获得此模型的公共属性
                foreach (PropertyInfo pi in propertys)
                {
                    if (dt.Columns.Contains(pi.Name))
                    {
                        if (!pi.CanWrite) continue;
                        var value = dr[pi.Name];
                        if (value != DBNull.Value)
                        {
                            switch (pi.PropertyType.FullName)
                            {
                                case "System.Decimal":
                                    pi.SetValue(t, decimal.Parse(value.ToString()), null);
                                    break;
                                case "System.String":
                                    pi.SetValue(t, value.ToString(), null);
                                    break;
                                case "System.Int32":
                                    pi.SetValue(t, int.Parse(value.ToString()), null);
                                    break;
                                default:
                                    pi.SetValue(t, value, null);
                                    break;
                            }
                        }
                    }
                }
                ts.Add(t);
            }
            return ts;
        }
    }

三、调用

  class Root
    {
    public List <Qba > qba { get; set; }
        public Root(string syxh)
        {
            DataTable data = DataAccess.Access().GetTableByProcedure("存储名称",
               new SqlParameter[]{ 
                       new SqlParameter("@唯一号",syxh)
                    });
            qba = ToModel<Qba>.ConvertToModel(data);
            }
     }

四、将实体类转换成json字符串

Root root = new Root(syxh);
String  jsonStr = JsonConvert.SerializeObject(root);
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>