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

代码如下:

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                IList<LYZX.Model.LYZX_NewsTypeModel> list = GetList<LYZX.Model.LYZX_NewsTypeModel>(System.Configuration.ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString,
               "select * from LYZX_NewsType");

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

public string GetNewsTypeLink(ref string baseUrl,Guid newsType)
        {
            return "";
        }

/// <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;
        }

(0)

相关推荐

  • C#控制台基础 List泛型集合与对应的数组相互转换实现代码

    核心代码: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication10 { class Program { static void Main(string[] args) { List<int> list = new List&l

  • c#使用htmlagilitypack解析html格式字符串

    使用方法: 1.引用HtmlAgilityPack.dll文件 2.引用命名空间: 复制代码 代码如下: using HtmlAgilityPack; 3.调用 复制代码 代码如下: static void Main(string[] args)        {            string html = GetHtml("http://www.jb51.net");            HtmlDocument doc = new HtmlDocument();      

  • C#实现将类的内容写成JSON格式字符串的方法

    本文实例讲述了C#实现将类的内容写成JSON格式字符串的方法.分享给大家供大家参考.具体如下: 本例中建立了Person类,赋值后将类中内容写入到字符串中 运行本代码需要添加引用动态库Newtonsoft.Json 程序代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //需要引用 Newtonsoft.Js

  • 编写高质量代码改善C#程序——使用泛型集合代替非泛型集合(建议20)

    软件开发过程中,不可避免会用到集合,C#中的集合表现为数组和若干集合类.不管是数组还是集合类,它们都有各自的优缺点.如何使用好集合是我们在开发过程中必须掌握的技巧.不要小看这些技巧,一旦在开发中使用了错误的集合或针对集合的方法,应用程序将会背离你的预想而运行. 建议20:使用泛型集合代替非泛型集合 在建议1中我们知道,如果要让代码高效运行,应该尽量避免装箱和拆箱,以及尽量减少转型.很遗憾,在微软提供给我们的第一代集合类型中没有做到这一点,下面我们看ArrayList这个类的使用情况: Array

  • C#中Dictionary泛型集合7种常见的用法

    要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib)  Dictionary的描述 1.从一组键(Key)到一组值(Value)的映射,每一个添加项都是由一个值及其相关连的键组成 2.任何键都必须是唯一的 3.键不能为空引用null(VB中的Nothing),若值为引用类型,则可以为空值 4.Key和Value可以是任何类型(string,int,custom class 等) Dictionary常用用法:以

  • C#中利用LINQ to XML与反射把任意类型的泛型集合转换成XML格式字符串的方法

    在工作中,如果需要跟XML打交道,难免会遇到需要把一个类型集合转换成XML格式的情况.之前的方法比较笨拙,需要给不同的类型,各自写一个转换的函数.但是后来接触反射后,就知道可以利用反射去读取一个类型的所有成员,也就意味着可以替不同的类型,创建更通用的方法.这个例子是这样做的:利用反射,读取一个类型的所有属性,然后再把属性转换成XML元素的属性或者子元素.下面注释比较完整,就话不多说了,有需要看代码吧! using System; using System.Collections.Generic;

  • C#中把任意类型的泛型集合转换成SQLXML数据格式的实例

    话不多说,跟着小编一起来看下吧 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlTypes; using System.Data; using System.Reflection; using System.IO; using System.Xml; namespace CollectionToXml { class Program

  • C#泛型集合Dictionary<K,V>的使用方法

    1.要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib) 2.描述 1).从一组键(Key)到一组值(Value)的映射,每一个添加项都是由一个值及其相关连的键组成 2).任何键都必须是唯一的 3).键不能为空引用null(VB中的Nothing),若值为引用类型,则可以为空值 4).Key和Value可以是任何类型(string,int,custom class 等) 3.创建及初始化 复制代码 代码如下:

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

    复制代码 代码如下: protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                IList<LYZX.Model.LYZX_NewsTypeModel> list = GetList<LYZX.Model.LYZX_NewsTypeModel>(System.Configuration.Configurat

  • Asp定时执行操作 Asp定时读取数据库(网页定时操作详解)

    目前定时的操作有: 一.Html页面的定时刷新(Refresh--刷新 ) 1,Refresh (刷新) 代码使用说明 说明:让网页多长时间(秒)刷新自己,或在多长时间后让网页自动链接到其它网页. 用法:<Meta http-equiv="Refresh" Content="30"> <Meta http-equiv="Refresh" Content="5; Url=http://www.jb51.net"

  • java 泛型的详解及实例

    java 泛型的详解及实例 Java在1.5版本中增加了泛型,在没有泛型之前,从集合中读取每一个对象都需要进行强转,如果一不小心插入了类型错误的对象,在运行时就会报错,给日常开发带来了很多不必要的麻烦,比如以下代码: public class TestGeneric { public static void main(String[] args) { List list = new ArrayList(); list.add(" name:"); list.add(" zer

  • Java知识梳理之泛型用法详解

    目录 泛型 作用 集合中泛型 自定义泛型 通配符 2.注意点 3.有限制的通配符 泛型 背景: 从JDK 5.0以后,Java引入了“参数化类型(Parameterized type)”的概念,允许我们在创建集合时再指定集合元素的类型,正如:List ,这表明该List只能保存字符串类型的对象. 作用 解决元素存储的安全性问题,好比商品.药品标签,不会弄错. 解决获取数据元素时,需要类型强制转换的问题,好比不用每回拿商品.药品都要辨别. @Test public void test1(){ Ar

  • ORACLE数据库中Rownum用法详解

    ORACLE 中ROWNUM用法总结!  对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=),并非说用>,& gt;=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个 rownum 伪列的意义就不应该感到惊奇,同样是伪列,rownum 与 rowid 可有些不一样,下面以例子说明: 假设某个表

  • Django中get()和filter()返回值区别详解

    先上官方文档! filter(**kwargs) 返回包含与给定查找参数匹配的对象的新查询集. 简单来说,返回一个又对象组成的查询集合 get(**kwargs) 返回与给定查找参数匹配的对象,该对象应采用字段查找中描述的格式. 例子 例如在Model中有一个Order类,包含一个id字段,输入 id 为2019 字段的 id 1.get()方法 orders = Orders.objects.get(id=20190003) print(order) 先查看orders是什么,结果为 Orde

  • C#数据库操作的示例详解

    目录 功能需求 技术知识点 准备工作 实现步骤 功能需求 1,利用随机数模拟产生每次考试成绩 2,将每次考试成绩存入到数据库 3,将每次考试成绩划分优.良.中.差.不及格五类,并作为查询条件,查询符合每种水平的成绩 技术知识点 1.random类的使用 2.数据库的链接.添加数据.查询数据.读取数据 3,combox控件的使用 4,DataGridView控件的使用 准备工作 创建数据库,本文案例使用Sql Server2014,数据库表如下: 实现步骤 1.模拟产生考试成绩,点击考试按钮,产生

  • Hibernate识别数据库特有字段实例详解

    Hibernate识别数据库特有字段实例详解 前言: Hibernate已经为绝大多数常用的数据库数据类型提供了内置支持,但对于某些数据库的专属字段支持就不够好了. 这些特殊数据类型往往提供了比常规数据类型更好的数据表达能力,更符合我们的业务场景.比如PostgreSQL的Interval类型,可以非常方便的保存一个时间段的数据. 本文以添加Interval类型支持为例,说明为Hibernate添加特有数据类型支持的方法. Hibernate提供了丰富的数据类型支持,但对于部分数据库专有的数据类

  • Spring AOP切面解决数据库读写分离实例详解

    Spring AOP切面解决数据库读写分离实例详解 为了减轻数据库的压力,一般会使用数据库主从(master/slave)的方式,但是这种方式会给应用程序带来一定的麻烦,比如说,应用程序如何做到把数据写到master库,而读取数据的时候,从slave库读取.如果应用程序判断失误,把数据写入到slave库,会给系统造成致命的打击. 解决读写分离的方案很多,常用的有SQL解析.动态设置数据源.SQL解析主要是通过分析sql语句是insert/select/update/delete中的哪一种,从而对

  • 基于Java中的数值和集合详解

    数组array和集合的区别: (1) 数值是大小固定的,同一数组只能存放一样的数据. (2) java集合可以存放不固定的一组数据 (3) 若程序事不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用 数组转换为集合: Arrays.asList(数组) 示例: int[] arr = {1,3,4,6,6}; Arrays.asList(arr); for(int i=0;i<arr.length;i++){ System.out.println(arr[

随机推荐