zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#读取数据库返回泛型集合详解(DataSetToList)

c#数据库集合泛型 详解 读取 返回
2023-06-13 09:15:16 时间

复制代码代码如下:


protectedvoidPage_Load(objectsender,EventArgse)
       {
           if(!IsPostBack)
           {
               IList<LYZX.Model.LYZX_NewsTypeModel>list=GetList<LYZX.Model.LYZX_NewsTypeModel>(System.Configuration.ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString,
              "select*fromLYZX_NewsType");

               GridView1.DataSource=list;
               GridView1.DataBind();
           }
       }

       publicstringGetNewsTypeLink(refstringbaseUrl,GuidnewsType)
       {
           return"";
       }

       ///<summary>        
       ///获取泛型集合        
       //////</summary>        
       //////<typeparamname="T">类型</typeparam>        
       //////<paramname="connStr">数据库连接字符串</param>        
       ///<paramname="sqlStr">要查询的T-SQL</param>        
       ///<returns></returns>        
       publicIList<T>GetList<T>(stringconnStr,stringsqlStr)       
       {            
           using(SqlConnectionconn=newSqlConnection(connStr))           
           {               
               using(SqlDataAdaptersda=newSqlDataAdapter(sqlStr,conn))               
               {                 
                   DataSetds=newDataSet();                    
                   sda.Fill(ds);                   
                   returnDataSetToList<T>(ds,0);               
               }           
           }      
       }


       ///<summary>        
       ///DataSetToList        
       ///</summary>         
       ///<typeparamname="T">转换类型</typeparam>        
       ///<paramname="dataSet">数据源</param>        
       ///<paramname="tableIndex">需要转换表的索引</param>       
       //////<returns>泛型集合</returns>
       publicIList<T>DataSetToList<T>(DataSetdataset,inttableIndex)
       {
           //确认参数有效
           if(dataset==null||dataset.Tables.Count<=0||tableIndex<0)
           {
               returnnull;
           }

           DataTabledt=dataset.Tables[tableIndex];

           IList<T>list=newList<T>();


           for(inti=0;i<dt.Rows.Count;i++)
           {
               //创建泛型对象
               T_t=Activator.CreateInstance<T>();

               //获取对象所有属性
               PropertyInfo[]propertyInfo=_t.GetType().GetProperties();

               //属性和名称相同时则赋值
               for(intj=0;j<dt.Columns.Count;j++)
               {
                   foreach(PropertyInfoinfoinpropertyInfo)
                   {
                       if(dt.Columns[j].ColumnName.ToUpper().Equals(info.Name.ToUpper()))
                       {
                           if(dt.Rows[i][j]!=DBNull.Value)
                           {
                               info.SetValue(_t,dt.Rows[i][j],null);
                           }
                           else
                           {
                               info.SetValue(_t,null,null);
                           }

                           break;
                       }
                   }
               }

               list.Add(_t);
           }

           returnlist;
       }