TabletoJson,表格转json数据格式


//引用方法

DataSet dataSetnum = fy.GetPageDataset(table, "*", "PropertyID", 1, 1, 1, 1, "");
            DataSet dataSet = fy.GetPageDataset(table, "*", "PropertyID",  Convert.ToInt32(Request["limit"]), Convert.ToInt32(Request["page"]), 0, 0, "");
            //调用上面的将DataSet转换为List<Menu>实体集合
       department menus = TabletoJson.DataSetToEntity<department>(dataSet, 0);
       Response.Write(JsonConvert.SerializeObject(menus)+"<br/>");
           
    List<department> tt = ToListByReflect<department>(dataSetc.Tables[0]);

Response.Write(JsonConvert.SerializeObject(tt)+"<br/>");

public class department
{
 public int id { get; set; }
 public int dictionary_id { get; set; }
 public string zg_name { get; set; }
 public int two_id { get; set; }
 public string name { get; set; }
 public string tel { get; set; }
 public string add_txt { get; set; }
 public string mark { get; set; }
 public string EmpID { get; set; }
 public int working { get; set; }
 public string addtime { get; set; }

 

public static List<T> ToListByReflect<T>(DataTable dt) where T : new()
        {
            List<T> ts = new List<T>();
            string tempName = string.Empty;
            foreach (DataRow dr in dt.Rows)
            {
                T t = new T();
                PropertyInfo[] propertys = t.GetType().GetProperties();
                foreach (PropertyInfo pi in propertys)
                {
                    tempName = pi.Name;
                    if (dt.Columns.Contains(tempName))
                    {
                        object value = dr[tempName];
                        if (value != DBNull.Value)
                        {

                          

                            Type Typeof = pi.PropertyType;      //这里是获取实体类字段属性
                            if (Typeof.IsGenericType && Typeof.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
                            {
                                Typeof = Nullable.GetUnderlyingType(Typeof);
                            }
                            pi.SetValue(t, Convert.ChangeType(value, Typeof), null);
                            // pi.SetValue(t, value, null);
                        }
                    }
                }
                ts.Add(t);
            }
            return ts;
        }


        /// <summary>
        /// DataSet转换为实体类
        /// </summary>
        /// <typeparam name="T">实体类</typeparam>
        /// <param name="p_DataSet">DataSet</param>
        /// <param name="p_TableIndex">待转换数据表索引</param>
        /// <returns>实体类</returns>
        public static T DataSetToEntity<T>(DataSet p_DataSet, int p_TableIndex)
        {
            if (p_DataSet == null || p_DataSet.Tables.Count < 0)
                return default(T);
            if (p_TableIndex > p_DataSet.Tables.Count - 1)
                return default(T);
            if (p_TableIndex < 0)
                p_TableIndex = 0;
            if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)
                return default(T);

            DataRow p_Data = p_DataSet.Tables[p_TableIndex].Rows[0];
            // 返回值初始化
            T _t = (T)Activator.CreateInstance(typeof(T));
            PropertyInfo[] propertys = _t.GetType().GetProperties();
            foreach (PropertyInfo pi in propertys)
            {

                if (p_DataSet.Tables[p_TableIndex].Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data[pi.Name.ToUpper()] != DBNull.Value)
                {
                   

                    Type Typeof = pi.PropertyType;      //这里是获取实体类字段属性
                    if (Typeof.IsGenericType && Typeof.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
                    {
                        Typeof = Nullable.GetUnderlyingType(Typeof);
                    }
                    pi.SetValue(_t, Convert.ChangeType(p_Data[pi.Name.ToUpper()], Typeof), null);


                  

                }
                else
                {
                    pi.SetValue(_t, null, null);
                }
            }
            return _t;
        }

        /// <summary>
        /// DataSet转换为实体列表
        /// </summary>
        /// <typeparam name="T">实体类</typeparam>
        /// <param name="p_DataSet">DataSet</param>
        /// <param name="p_TableIndex">待转换数据表索引</param>
        /// <returns>实体类列表</returns>
        public static IList<T> DataSetToEntityList<T>(DataSet p_DataSet, int p_TableIndex)
        {
            if (p_DataSet == null || p_DataSet.Tables.Count < 0)
                return default(IList<T>);
            if (p_TableIndex > p_DataSet.Tables.Count - 1)
                return default(IList<T>);
            if (p_TableIndex < 0)
                p_TableIndex = 0;
            if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)
                return default(IList<T>);

            DataTable p_Data = p_DataSet.Tables[p_TableIndex];
            // 返回值初始化
            IList<T> result = new List<T>();
            for (int j = 0; j < p_Data.Rows.Count; j++)
            {
                T _t = (T)Activator.CreateInstance(typeof(T));
                PropertyInfo[] propertys = _t.GetType().GetProperties();
                foreach (PropertyInfo pi in propertys)
                {
                    if (p_Data.Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data.Rows[j][pi.Name.ToUpper()] != DBNull.Value)
                    {
                        Type Typeof = pi.PropertyType;      //这里是获取实体类字段属性
                        if (Typeof.IsGenericType && Typeof.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
                        {
                            Typeof = Nullable.GetUnderlyingType(Typeof);
                        }
                        pi.SetValue(_t, Convert.ChangeType(p_Data.Rows[j][pi.Name.ToUpper()], Typeof), null);
                      
                    }
                    else
                    {
                        pi.SetValue(_t, null, null);
                    }
                }
                result.Add(_t);
            }
            return result;
        }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM