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

转自 http://www.cnblogs.com/wuhuisheng/archive/2012/04/26/2471733.html

  1 /// <summary>
  2         /// 获取UserInfo泛型集合
  3         /// </summary>
  4         /// <param name="connStr">数据库连接字符串</param>
  5         /// <param name="sqlStr">要查询的T-SQL</param>
  6         /// <returns></returns>
  7         public IList<UserInfo> GetUserInfoAll(string connStr, string sqlStr)
  8         {
  9             using (SqlConnection conn = new SqlConnection(connStr))
 10             {
 11                 using (SqlCommand cmd = new SqlCommand(sqlStr, conn))
 12                 {
 13                     SqlDataReader sdr = cmd.ExecuteReader();
 14
 15                     IList<UserInfo> list = new List<UserInfo>();
 16
 17                     while (sdr.Read())
 18                     {
 19
 20                         UserInfo userInfo = new UserInfo();
 21
 22                         userInfo.ID = (Guid)sdr["ID"];
 23
 24                         userInfo.LoginName = sdr["LoginName"].ToString();
 25
 26                         userInfo.LoginPwd = sdr["LoginPwd"].ToString();
 27
 28                         list.Add(userInfo);
 29
 30                     }
 31                     return list;
 32                 }
 33             }
 34         }
 35
 36         /// <summary>
 37         /// 获取泛型集合
 38         /// </summary>
 39         /// <typeparam name="T">类型</typeparam>
 40         /// <param name="connStr">数据库连接字符串</param>
 41         /// <param name="sqlStr">要查询的T-SQL</param>
 42         /// <returns></returns>
 43         public IList<T> GetList<T>(string connStr, string sqlStr)
 44         {
 45             using (SqlConnection conn = new SqlConnection(connStr))
 46             {
 47                 using (SqlDataAdapter sda = new SqlDataAdapter(sqlStr, conn))
 48                 {
 49                     DataSet ds = new DataSet();
 50                     sda.Fill(ds);
 51                     return DataSetToList<T>(ds, 0);
 52                 }
 53             }
 54         }
 55
 56         /// <summary>
 57         /// DataSetToList
 58         /// </summary>
 59         /// <typeparam name="T">转换类型</typeparam>
 60         /// <param name="dataSet">数据源</param>
 61         /// <param name="tableIndex">需要转换表的索引</param>
 62         /// <returns></returns>
 63         public IList<T> DataSetToList<T>(DataSet dataSet, int tableIndex)
 64         {
 65             //确认参数有效
 66             if (dataSet == null || dataSet.Tables.Count <= 0 || tableIndex < 0)
 67                 return null;
 68
 69             DataTable dt = dataSet.Tables[tableIndex];
 70
 71             IList<T> list = new List<T>();
 72
 73             for (int i = 0; i < dt.Rows.Count; i++)
 74             {
 75                 //创建泛型对象
 76                 T _t = Activator.CreateInstance<T>();
 77                 //获取对象所有属性
 78                 PropertyInfo[] propertyInfo = _t.GetType().GetProperties();
 79                 for (int j = 0; j < dt.Columns.Count; j++)
 80                 {
 81                     foreach (PropertyInfo info in propertyInfo)
 82                     {
 83                         //属性名称和列名相同时赋值
 84                         if (dt.Columns[j].ColumnName.ToUpper().Equals(info.Name.ToUpper()))
 85                         {
 86                             if (dt.Rows[i][j] != DBNull.Value)
 87                             {
 88                                 info.SetValue(_t, dt.Rows[i][j], null);
 89                             }
 90                             else
 91                             {
 92                                 info.SetValue(_t, null, null);
 93                             }
 94                             break;
 95                         }
 96                     }
 97                 }
 98                 list.Add(_t);
 99             }
100             return list;
101         }

public class UserInfo
    {
        public System.Guid ID { get; set; }

public string LoginName { get; set; }

public string LoginPwd { get; set; }
    }

时间: 2024-08-02 02:48:04

读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合的相关文章

泛型学习第三天——C#读取数据库返回泛型集合 把DataSet类型转换为List&lt;T&gt;泛型集合

定义一个类: public class UserInfo    {        public System.Guid ID { get; set; } public string LoginName { get; set; } public string LoginPwd { get; set; }    } /// <summary> /// 获取UserInfo泛型集合 /// </summary> /// <param name="connStr"

使用反射为泛型集合添加其他类型的数据时遇到的问题

泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合进会去掉“类型”信息,使程序运行效率不受影响. 由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合虽加入其它类型的数据. 所以我们可以用反射为泛型集合添加其他类型的数据. 例1: ArrayList<Integer> arrayList = new ArrayList<Integer>(); arrayList .add(10); a

表达式树练习实践:C#值类型、引用类型、泛型、集合、调用函数

目录 表达式树练习实践:C#值类型.引用类型.泛型.集合.调用函数 一,定义变量 二,访问变量/类型的属性字段和方法 1. 访问属性 2. 调用函数 三,实例化引用类型 四,实例化泛型类型于调用 五,定义集合变量.初始化.添加元素 表达式树练习实践:C#值类型.引用类型.泛型.集合.调用函数 一,定义变量 C# 表达式树中,定义一个变量,使用 ParameterExpression. 创建变量结点的方法有两种, Expression.Parameter() Expression.Variable

再谈怎样以最简单的方法将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式

今天review代码,看见某些大爷在将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式时仍然仅仅顾结果不注重过程,"大爷"咱能负点责任吗? 将泛型为String类型的集合转化为逗号间隔字符串形式: 測试类: package com.ghj.packageofclient; import java.util.ArrayList; import java.util.List; import com.ghj.packageoftool.StringUtils; p

再谈如何以最简单的方法将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式

今天review代码,看见某些大爷在将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式时仍然只顾结果不注重过程,"大爷"咱能负点责任吗? 将泛型为String类型的集合转化为逗号间隔字符串形式: 测试类: package com.ghj.packageofclient; import java.util.ArrayList; import java.util.List; import com.ghj.packageoftool.StringUtils; pu

使用数据集(DataSet)、数据表(DataTable)、集合(Collection)传递数据

数据集(DataSet).数据表(DataTable).集合(Collection)概念是.NET FrameWork里提供数据类型,在应用程序编程过程中会经常使用其来作为数据的载体,属于ADO.NET的一部分.今天我们WCF分布式开发步步为赢第8节的内容:使用数据集(DataSet).数据表(DataTable).集合(Collection)传递数据.本节内容除了介绍几个类型概念外的,同样会详细给出代码的实现过程.此外我们会分析这几种数据类型的优势和缺点,以及在面向对象的服务开发过程中如何解决

集合【迭代器、增强for、泛型】

java.util.Collection接口 是集合的最顶层的接口,定义了集合共性的方法 接口无法直接创建对象,使用多态的方式创建对象 Collection<集合中的数据类型(泛型)> coll = new ArrayList<集合中的数据类型(泛型)>(); 迭代器 集合中存储数据的方式(数据类型)不一样,取出集合中元素的方式也不同,java给我们提供了一种公共的取出元素的方式,叫迭代器 描述迭代器的接口:java.util.Iterator 接口中的抽象方法: boolean

去除List集合中的重复元素? 如果没有Set集合,List集合是怎么去除重复元素的(字符串类型,自定义类型)?

 关键字: 如果没有Set集合,List集合是怎么去除重复元素的(字符串类型)?  *   *     思考: List就可以存储重复元素,那么需求中容器中的元素必须保证唯一性,该如何解决呢??  *      *   去除List集合中的重复元素?  * * 思路: * * 1.首先我需要另一个临时容器tempList,用来存放我认为应该保留的元素.(也就是不重复的元素) * 2.然后我们应该遍历原容器, 一个一个的取出元素, 放入tempList. * 当tempList里已经装有刚刚取出的

C API--linux上c语言读取数据库内容(mysql)

要想知道怎么通过c语言操作数据库,必须要了解这几个结构体的含义,这里只是简单说一下如果想要了解的更深入可以到网上搜一下 C API数据类型 1.MYSQL结构代表一个数据库连接的句柄,包含有关服务器的连接状态的信息,几乎所有的函数均使用到他.要连接MySQL,必须建立MYSQL实例,通过mysql_init初始化方能开始连接. 2.MYSQL_RES结果代表返回的查询结果(select,show等).也将查询的返回的信息成为"结果集".在c的API里对应的就是MYSQL_RES了,从数