您当前的位置: 首页 > 网站编程 > 点NET教程 > C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合

C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合

作者:不详 来源:网络 发布时间: 2013-10-08 13:34 点击:
/// summary /// 获取UserInfo泛型集合 /// /summary /// param name=connStr数据库连接字符串/param /// param name=sqlStr要查询的T-SQL/param /// returns/returns public IListUserInfo GetUserInfoAll(string connStr, string sqlStr) { using (SqlConnection con

C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合

 /// <summary>

        /// 获取UserInfo泛型集合
        /// </summary>
        /// <param name="connStr">数据库连接字符串</param>
        /// <param name="sqlStr">要查询的T-SQL</param>
        /// <returns></returns>
        public IList<UserInfo> GetUserInfoAll(string connStr, string sqlStr)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                using (SqlCommand cmd = new SqlCommand(sqlStr, conn))
                {
                    SqlDataReader sdr = cmd.ExecuteReader();
 
                    IList<UserInfo> list = new List<UserInfo>();
 
                    while (sdr.Read())
                    {
 
                        UserInfo userInfo = new UserInfo();
 
                        userInfo.ID = (Guid)sdr["ID"];
 
                        userInfo.LoginName = sdr["LoginName"].ToString();
 
                        userInfo.LoginPwd = sdr["LoginPwd"].ToString();
 
                        list.Add(userInfo);
 
                    }
                    return list;
                }
            }
        }
 
        /// <summary>
        /// 获取泛型集合
        /// </summary>
        /// <typeparam name="T">类型</typeparam>
        /// <param name="connStr">数据库连接字符串</param>
        /// <param name="sqlStr">要查询的T-SQL</param>
        /// <returns></returns>
        public IList<T> GetList<T>(string connStr, string sqlStr)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter(sqlStr, conn))
                {
                    DataSet ds = new DataSet();
                    sda.Fill(ds);
                    return DataSetToList<T>(ds, 0);
                }
            }
        }
 
        /// <summary>
        /// DataSetToList
        /// </summary>
        /// <typeparam name="T">转换类型</typeparam>
        /// <param name="dataSet">数据源</param>
        /// <param name="tableIndex">需要转换表的索引</param>
        /// <returns></returns>
        public IList<T> DataSetToList<T>(DataSet dataSet, int tableIndex)
        {
            //确认参数有效
            if (dataSet == null || dataSet.Tables.Count <= 0 || tableIndex < 0)
                return null;
 
            DataTable dt = dataSet.Tables[tableIndex];
 
            IList<T> list = new List<T>();
 
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                //创建泛型对象
                T _t = Activator.CreateInstance<T>();
                //获取对象所有属性
                PropertyInfo[] propertyInfo = _t.GetType().GetProperties();
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    foreach (PropertyInfo info in propertyInfo)
                    {
                        //属性名称和列名相同时赋值
                        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);
            }
            return list;
        }
 
    public class UserInfo
    {
        public System.Guid ID { get; set; }
 
        public string LoginName { get; set; }
 
        public string LoginPwd { get; set; }

    }

分享到:
本文"C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4