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 ...
随机推荐
- 遗传算法在JobShop中的应用研究(part 7:整体流程)
""" pop是种群,种群中的每个个体的形式是,(makespan, 染色体)""" pop = [(ComputeStartTimes(g ...
- python3 cgi传数据
用cgi向文本或者数据库写入数据 1.开启cgi服务 python -m http.server --cgi port[端口可选默认为8000] update.py代码 #coding:utf8im ...
- HTML特殊转义字符列表
HTML特殊转义字符列表 最常用的字符实体 显示 说明 实体名称 实体编号 空格 < 小于 < < > 大于 > > & ...
- iphone中 input圆角bug
今天写了个简单的登录注册,在电脑手机(除了iphone)样式都没有问题,但在iphone中却出现了异常,提交的按钮变成圆角被背景渐变的效果,随后又测试两个iphone版都是一个样,断定应该是safar ...
- road习题(一)
答案:[D] 答案:[C] 分析需要靠人 答案:[B] 答案:[B] c语言本身支持自定义函数 答案:[B] Virtual User Generator:是一个脚本开发组件 说白了就是虚拟机用户发生 ...
- 团队作业week14
0 如果你的团队来了一个新队员,有一台全新的机器,你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境, 并成功地把最新.最稳定版本的软件编译出来,并运行必要的单元测试?(在这 ...
- /boot/grub/device.map【设备映射】
grub-install 安装 GRUB 在第一个硬盘的 MBR: # grub-install '(hd0)' grub-install 会先搜寻设备对应的文件(/boot/grub/device. ...
- maven工程使用spring-boot-devtools进行热部署,更改代码避免重启web容器
spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去.相关Blog: 点击打开链接 原理是在发现代码有更改之后,重新启动应用 ...
- duilib的caption上的Edit无法激活
当窗口设置标题栏时,鼠标等控件可以相应,edit无法响应. 主要和WindowImplBase::OnNcHitTest 虚函数有关. LRESULT WindowImplBase::OnNcHitT ...
- tar 解压常用压缩文件格式命令大全
常用压缩文件格式就那么几种,解压命令总结在此: 1 2 3 4 5 6 7 8 tar xzf filename.tar.gz tar xjf filename.tar.bz2 tar xzf f ...