DataSet集合直接根据传入的类转List<T>集合
最近比较忙,好久没写博客了。个人感觉最好的进步就是写东西。哈哈。
一般我们使用ADO.net从数据库中读取数据返回的集合是DataSet类型的。有时候我们需要进行转换成List<T>集合。一般的做法是在DAL层中,写个方法进行转换。(每个表写一个)。累哦!~
所以我就想,能不能写个工厂,传入DataSet 集合 和 需要转化的类的类型。就自动转化了。就有了下面的代码了。
/// <summary>
/// Dataset 集合根据传入的 类型。自动转换List集合"
/// </summary>
/// <typeparam name="T">类(属性类 modle)</typeparam>
/// <param name="ds">数据集合</param>
/// <returns>List集合</returns>
public List<T> GetListbyDataSet<T>(DataSet ds) where T: new()
{
List<T> li = new List<T>(); //声明要返回的集合
var s = typeof(T); // 获取传入类型
var str = s.GetProperties(); // 获取传入类型的属性集合
if (ds.Tables[] == null || ds.Tables[].Rows.Count < ) //判断ds的null和是否包含数据
{
return li;
}
for (int i = ; i < ds.Tables[].Rows.Count; i++) //循环集合准备获取数据
{
T t1 = new T(); // 声明类
foreach (var item in str) // 循环类的属性
{
string itemstr = item.Name; //类属性名称
var itemtype = item.PropertyType; // 类属性的类型(int string datetime)
object value = GetvalbyDataSet(itemstr, itemtype, ds.Tables[].Rows[i]); //获取值
item.SetValue(t1, value, null); }
li.Add(t1);
}
return li;
}
/// <summary>
/// 在DataRow中 获取 对应列的值
/// </summary>
/// <param name="colname">列名称</param>
/// <param name="colname">列的类型</param>
/// <param name="dr">DataRow 集合</param>
/// <returns>列值</returns>
private object GetvalbyDataSet(string colname,Type coltype, DataRow dr)
{
if (dr.Table.Columns.Contains(colname))
{
if (typeof(int) == coltype)
{
return dr[colname] == null ? : int.Parse(dr[colname].ToString());
}
if (typeof(DateTime) == coltype)
{
return dr[colname] == null ? DateTime.Parse("2016/9/22") : DateTime.Parse(dr[colname].ToString());
}
if (typeof(decimal) == coltype)
{
return dr[colname] == null ? decimal.Parse("") : decimal.Parse(dr[colname].ToString());
}
string str = dr[colname] == null ? "" : dr[colname].ToString();
return str;
}
else
{
return "";
}
}
DataSet集合直接根据传入的类转List<T>集合的更多相关文章
- JAVA异常处理、常用类、反射、集合
异常 异常:在Java中是指被一个方法抛出的对象. 分类:检查异常.运行时异常.错误 运行时异常(uncheckd):RuntimeException和其子类 检查异常(checkd/搜检异常):指E ...
- java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类
本文关键词: java集合框架 框架设计理念 容器 继承层级结构 继承图 集合框架中的抽象类 主要的实现类 实现类特性 集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...
- Java:类集框架中集合的学习
Java:类集框架中集合的学习 集合 Java:Set的学习 Set是类集框架中的集合类.集合是不按特定的方式排序,并且没有重复对象的一种类. Q:Set如何操作?Set中的不按特定方式排序是怎么排序 ...
- 浅谈集合框架六——集合扩展:Arrays工具类、集合与数组相互转换方式;
最近刚学完集合框架,想把自己的一些学习笔记与想法整理一下,所以本篇博客或许会有一些内容写的不严谨或者不正确,还请大神指出.初学者对于本篇博客只建议作为参考,欢迎留言共同学习. 之前有介绍集合框架的体系 ...
- Collection接口【集合】和Iterator迭代器类
1.1集合的概述 前面基础学习并使用过集合ArrayList<E>,那么集合究竟是什么呢? 集合:集合是Java中提供的一种容器,可以用来存储多个数据. 那么意思就是说集合是容器,但是容器 ...
- Python 集合set添加删除、交集、并集、集合操作符号
在Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 1. ...
- python 集合比较(交集、并集,差集)集合方法大全
python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和 ...
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
- 第1节 Scala基础语法:13、list集合的定义和操作;16、set集合;17、map集合
list.+:5 , list.::5: 在list集合头部添加单个元素5 : li1.:+(5):在list集合尾部添加单个元素5: li1++li2,li1:::li2:在li1集合尾部添加il2 ...
随机推荐
- C#获得类的方法和方法参数
Type t = typeof(CommonController); StringBuilder str = new StringBuilder(); MethodInfo[] methors = t ...
- java回调初步学习
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17483273),请尊重他人的辛勤劳动成果,谢谢以前不理解什 ...
- Javascript学习笔记:闭包题解(2)
代码: var name='The Window'; var object={ name:'My Object', getNameFunc:function(){ return function(){ ...
- yii2 renderPartial
在 views/news/_copyright.php 中插入以下代码: <div> This is text about copyright data for news items &l ...
- 被滥用的for in循环
众所周知,javascript中有两种for循环,一种是: var a=['this','is','a','article'], i, len; for( i = 0,len = a.length;i ...
- git hub
如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:git stashgit pullgit stash pop然后可以使用git diff -w +文件名 来确认代码自动合并的情况 ...
- mac 安装php7
卸载php55 brew unlink php55 brew install homebrew/php/php70 安装成功信息 To enable PHP in Apache add the fol ...
- 正则匹配中 ^ $ 和 \b 的区别
正则匹配中 ^ $ 和 \b 的区别 ^和$分别代表字符串的开始和结束,因此^\d$只能匹配包含一个数字的字符串\b代表单词边界,其前后必须是不同类型的字符,可以组成单词的字符为一种类型,不可 ...
- Tomcat APR & Linux Optimization
一.简介 APR(Apache portable Run-time libraries)模式:简单理解,就是从操作系统级别解决异步IO问题,大幅度的提高服务器的处理和响应性能, 也是Tomcat运行高 ...
- roundabout插件使用(3d旋转轮播图)兼容IE8
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...