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 ...
随机推荐
- 微信小程序-视图容器组件
view 视图容器 例如: <view class="section"> <view class="section__title">fl ...
- 关于引用JS和CSS刷新浏览器缓存问题
有时候我们会碰到上线的新版本都要刷新一次缓存的问题.那是因为改了JS的内容,但是JSP引用的地方后面的字符串未发生改变导致浏览器读取浏览器缓存而不会重新加载新的JS内容,以下提供两种解决方式: 1.每 ...
- 相机位姿估计1_1:OpenCV:solvePnP二次封装与性能测试
关键词:OpenCV::solvePnP 文章类型:方法封装.测试 @Author:VShawn(singlex@foxmail.com) @Date:2016-11-27 @Lab: CvLab20 ...
- MySQL自定义函数
用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同. 自定义函数两个必要条件: 参数:可以有另个或多个 返回值:只能有一个 创建自定 ...
- About vector
今天打vector又打炸了不!高!兴! vecotr头文件 #include<vector> 定义域 using namespace std; 或using std::vector; 初始 ...
- JS 之JSON
JSON是Javascript中的对象,其简单理解为下:
- ViewPager onPageChangeListener
今天在做项目的时候,由于要处理viewPager页面滑动的事件,所以对其进行了一个小小的研究: 首先ViewPager在处理滑动事件的时候要用到OnPageChangeListener OnPageC ...
- checkbox属性checked="checked"已有,但却不显示打勾的解决办法
2014-02-05 BIWEB开发技巧 9919 在做权限管理的时候,做了一个功能,就是当勾选栏目,把所有的权限全勾上.刚开始使用了如下代码: function check(id,check) { ...
- Failed: error processing document #281: unexpected EOF,往MongoDB当中插入json文件时出现的错误。
往MongoDB当中插入json文件时提示的错误(我的操作系统是win10): 当时的执行命令是:mongoimport -d test -c restaurants d://primer-datas ...
- REST架构之Apache Wink
Apache Wink是一个使用简单,稳定的Java框架,用于创建RESTful web services应用程序.Wink包括了一个服务器端模块和一个客户端模块,用于帮助开发者快速高效的开发REST ...